PHP関連のことを調べてみた2020年04月06日

PHP関連のことを調べてみた2020年04月06日

Laravel環境構築(Mac)

#はじめに

Laravelを初めて4月から初めて触る初学者です。
元はRailsを少し触っていましたが、色々あってLaravelを学習することにしたので、環境構築について自分なりにまとめておきます。

#PC情報
– macOS Catalina 10.15.3
– Macbook Pro (16-inch 2019)

#構築手順

##(1) Composer

###composerのダウンロード
PHPのパッケージ管理システムである[Composer] (https://getcomposer.org/)をインストールします。
上記リンクから

“`
Download >> Manual Download(下の方)
“`

にアクセスし最新バージョンをダウンロードします。
(2020年4月時点では、**1.10.1**が最新のためこれをダウンロード)

ダウンロードフォルダに**composer.phar**がダウンロードされたかと思います。

###composerをいつても呼び出せるようにする
ターミナルを起動し、以下のコマンド入力

“`
$ cd ~/Down

元記事を表示

Smartyを使ってみる

#1 インストール
1 download
 以下のサイトよりダウンロードします。
 http://www.smarty.net/

2 インストール
 ダウンロードしたzipを解凍します。使うのはlibsフォルダのみです。
 DocumentRootにsampleフォルダを作成しサンプルアプリを置くものとして

 htdocs + sample
      └ libs      <- ダウンロードしたsmartyのlibs  ※libsを複数プロジェクト共通で利用する場合は、   c:\smarty3\libs 等適当な場所へ配置しましょう。 3 設定  smartyのlibsを共通で使う場合は、php.iniのinclude_pathの設定を行います。 ";"を削除し、";c:\smarty3\libs"等と追記します。 ```php.ini ; UNIX: "/path1:/path2" ;include_path = ".:/php/includes"  ↓ include_path = ".:/php/includes:/usr/local/lib/smarty3/li

元記事を表示

phpで標準入力する方法

今回は備忘録をかねて、様々な例を使ってphpで行う標準入力について、まとめてみました。

***基本編***

“`app.php
/* 1行のデータを取得する場合
* 例:「hogehoge」
*/
$data = rtrim(fgets(STDIN));

/* ‘ ‘(空白行)で分けられた1行のデータを配列で取得する場合
* 例:「hogehoge gehogeho」
*/
$data = explode(‘ ‘, rtrim(fgets(STDIN)));
“`
**応用編**

“`app.php
/* 先頭の行に数字Nが書かれてて、後続のN行分のデータを配列で取得する場合
* 例:「2
* hogehoge
* gehogeho」
*/
$data = rtrim(fgets(STDIN));
$data_arr=array();
for($i=0;$i<$data;$i++){ $data_arr[]=rtrim(fgets(STDIN)); } /* 出力値 * Array( * [0] => gehogeho
* [1] =

元記事を表示

Slackでモーダル(ダイアログ)を使ってデータを送信する

最近、弱々エンジニア会に参加しました。
記事貢献を兼ねて、久しぶりのQiita投稿です!
今回はSlackでSlackAppを使って、モーダル(ダイアログ)使ったデータの入出力を行う方法を解説していきたいと思います。

## 今回作るもの
**/modal** というSlashコマンドを実行すると [Block Kit Builder](https://api.slack.com/tools/block-kit-builder) で作られたモーダルを表示して、入力された値をサーバーに送るSlackアプリを作ります。
![ezgif.com-video-to-gif (3).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99737/df0573cd-9832-661b-a7a7-0dd26130d6fb.gif)

## 参考資料
https://api.slack.com/surfaces/modals/using

## 開発環境
– PHP 7.2 (Laravel 6.16)
– GAE Stan

元記事を表示

laravel入門2版(本)が全然始められない人のためのまとめ

##吐きそうになりながらlaravelインストールした話
ララベルの代表書であるララベル入門第二版を購入してインストールしようとしたがつまずくポイントが多すぎて吐きそうになったので過去の自分を助けてあげるつもりで解決策を書いていこうと思います。

##環境/対象者
mac Os catalina
これからlaravel6とphp7.2を使おうとしている人
terminalのコマンドがある程度(directoryの移動程度)ができる人

##詰みポイントのまとめ
– まずこれが設定できていないと詰む zshとbash
– composerでlaravelをインストールしようとしてもphpのバージョンがふるかったり相性が合わないと詰む
– pathの通しかたが分からなくて詰む、というかパスが何か分からなくて詰む

###ますこれができていないと詰むzashとbash
まずlaravelを初めてインストールしようとした時にterminalのshellがzshだとパスがうまく通せなくて詰みます。
bashに変更しましょう。

“`
echo $SHELL
“`
でshellがbashにな

元記事を表示

PHP+SQLiteから始めるWebアプリケーションの作り方(その4)

## Webサーバ(HTTP)によるアクセス制御と認証

アクセス制御やHTTP上の認証の設定方法は、Webサーバによって異なります。なお、Document rootより浅い階層にアクセスされたくないファイルを置くことができるのならば、アクセスの防止はそのような形でも実現できます。

### Apache HTTP Serverによるアクセス制御
Apache HTTP Serverでは、主に.htaccessファイルを使ってアクセス制御を行います。Document root以下の対象のディレクトリに`.htaccess`ファイルを作成し、そこに決まった形式で設定を記述します。

“`apache
Deny from All
“`

これはそのディレクトリ以下へのすべての(HTTPによる)アクセスを拒否する(403を返す)という設定です(ただし、これを設置したディレクトリより深い階層に別の`.htaccess`ファイルを置くと上書きされることがあります)。

httpd.confファイルにアクセスできるのであれば、アクセス制御をそちらに記述することもできます。

mod_rewr

元記事を表示

PHP+SQLiteから始めるWebアプリケーションの作り方(その3)

## PHP + SQLite(その2)
さて、ようやく本題です。PHPとSQLiteを組み合わせて、簡単なWebアプリケーション(ブログ)を作ってみましょう。

### 記事を投稿する

まず、POSTリクエストを送信するフォームを含むHTMLを作成します。あとでPHPスクリプトを書き足すので、ファイル名は`edit.php`のように拡張子を`php`にしておいてください。

“`php


“`

PHPを先頭に書き足します。メッセー

元記事を表示

PHP+SQLiteから始めるWebアプリケーションの作り方(その2)

## PHP
PHPは、HTML文書に埋め込み可能なサーバ側(サーバサイド)で実行されるスクリプト言語です。(有料の)レンタルサーバではPHPとCGIが実行できる環境が多いです(最安で年額1000〜2000円前後か、VPSなどに比べて共有サーバだとかなり安い)。CGIというのは、対象のファイルにブラウザから呼び出しがあったとき、そのファイル(プログラム)を都度実行し、出力を応答する仕組みです。印象ですが、CGIのプログラムファイルには(Shebangが1行目に記述された)スクリプトファイルを使うことが多く、CGIの言語にはRubyやPerlが主に使われ(Pythonも使えますが)、一昔前の掲示板やチャット、一部のゲーム(箱庭諸島やブラジャータウンなど)はこのような形式のCGIで動いていました(cgi-binというディレクトリや拡張子cgiが特徴的か)。今だったらDjangoとかWebSocketとかFirebaseとか使うんでしょうか。

– [PHP](https://www.php.net/)

PHPには、WebサーバのSAPI経由で動作する方式(主にApache HTTP S

元記事を表示

PHP+SQLiteから始めるWebアプリケーションの作り方(その1)

## はじめに
この記事は、PHPとSQLiteを使って非常にシンプルなWebアプリケーション(ブログ)を作り、またそこから他のDBMSへ移行したり、他の言語等でWebアプリケーションを開発する基礎を押さえることを目的にしたものです。ある程度のプログラミング経験と自分で調べながら読み進めることを要求するかもしれません。各項目は割と手抜きだったり、文字が多かったりします。

また、Webの世界は日進月歩ですので、あまり新しいバージョンだと互換性が失われていることもあるかもしれません。しかし、同時に脆弱性の発見と修正も日々行われています。最新の安定版、というようなリリース元がおすすめしているバージョンを使うといいのではないかな、と思います(リリース元の発信する情報には注意するようにしてください。あなたのアプリケーションとそのユーザが影響/被害を受ける致命的な脆弱性が見つかることがあります)。

それから、もし(バージョンの関係や自分の追加したコードで)動かないところがあったら、自分で調べて直してみるのも大切なことかなと思います(誤植はすいません..)。また、英語で調べてみないと情報が得ら

元記事を表示

【cakePHP】環境構築 (Mac)メモ

#はじめに
・homebrewインストール
・phpインストール
・composerのインストール
・mysqlの接続
このような流れで環境構築していきます。

#Homebrewインストール
公式https://brew.sh/index_ja.html
通りにターミナルでコマンド入力

“`
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
“`
#PHPインストール
*次のComposerのインストールには、PHPが先にインストールされている必要があります。今回は以下のバージョンのPHPがインストールされている環境にComposerをインストールします。

“`
brew install homebrew/php/php72

==> Tapping homebrew/php
Cloning into ‘/usr/local/Homebrew/Library/Taps/homebrew/homebrew-php’…
~~中略

元記事を表示

Mockery の shouldReceive() と shouldHaveReceived() ってどう違うの?

PHP のテストで DOC[^doc-definition] をテストダブルに置き換えるのに [Mockery](https://github.com/mockery/mockery) というライブラリを重宝しています。
そのダミーオブジェクトのメソッド `shouldReceive()` と `shouldHaveReceived()` の違いが毎度毎度分からなくなるので、整理してみました。

## TL;DR

– `shouldReceive()` はモックが持つメソッド。 SUT[^sut-definition] の実行前に記述し、期待する間接出力[^indirect-output-definition]を定義する。
– `shouldHaveReceived()` はスパイが持つメソッド。 SUT の実行後に記述し、間接出力の内容を検証する。

## モックとスパイについて

[こちらの記事](http://goyoki.hatenablog.com/entry/20120301/1330608789)が大変参考になります。
記事下部の分類方法を引用します。

> Test

元記事を表示

PHP_CodeSnifferでPSR2ベースの自作ルール適用

静的解析ツールPHP_CodeSnifferをサーバに導入したときのメモです。

自作ルールと既存ルールをカスタマイズして使いたいけど、英語はなるべく読みたくない人へ向けて。
(雑です)

## 1. phpcsインストール
`./vendor`配下に、静的解析を行う`phpcs`と、自動変換を行う`phpcbf`がインストールされます。

“`
composer require –dev “squizlabs/php_codesniffer=*”
“`

## 2. phpcs.xmlの作成
ドキュメントルート直下に`phpcs.xml`を作成します。
フォーマットは下記にあります
`./vendor/squizlabs/php_codesniffer/phpcs.xml.dist`

ここではデフォルト値を設定しておくとよいです。
ちなみにdistではPEARがデフォルトのルールに設定されています。

“`xml:phpcs.xml

Laravel で $_SERVER[‘QUERY_STRING’] を取得するいくつかの方法

`$_SERVER[‘QUERY_STRING’]` が欲しかったのです。

たとえば、URL が `http://example.com/hoge?piyo=1&piyo=2` であれば、

であれば `piyo=1&piyo=2` 部分を取得したいのです。

結論以下のように書きました。

“`php
$request->getQueryString();
“`

これは、laravel の内部で使っている symfony が用意しているメソッドです。

[laravel 該当コード](https://github.com/laravel/framework/blob/a6146be7ab47050a9594672f3b8d409e91c65ee4/src/Illuminate/Http/Request.php#L114)

[symfony 該当コード](https://github.com/symfony/symfony/blob/3987914982e8c7dbec7a85e533b849ece89ac885/src/Symfony/Component/HttpFo

元記事を表示

Laravel 使用頻度の高そうなコマンド

# 目的

– Laravelで使用頻度の高そうなコマンドをまとめる
– 自分が必要に感じたものを随時追加してゆく

# ローカルサーバの起動

– アプリ名ディレクトリで下記コマンドを実行する。

“`terminal
$ php artisan serve
“`

# マイグレーションファイルを作成する。

– マイグレーションファイルに命名規則はないが、どんな修正をDBに与えるのかがわかりやすいファイルである必要がある。

1. テーブルの新規作成
– アプリ名ディレクトリで下記コマンドを実行する。

“`terminal
$ php artisan make:migration create_テーブル名_table –create=テーブル名
“`
1. 既存テーブルにカラム追加等の途中からテーブルに修正を加える
– アプリ名ディレクトリで下記コマンドを実行する。(下記のコマンドは〇〇カラムを追加する時のコマンドの例)

“`terminal
$

元記事を表示

PHP【Laravel】:POSTの設定とCSRF対策について

PHPのフレームワークLaravelでPOSTを使い値を送信する際の注意点について学んだのでメモ。

POSTを使うなんてプログラミングを学び始めの頃、見よう見まねでできたのに、何今頃つまずいているんだと凹みながら色々調べていたら、Laravelでは少し勝手が違うようだった。

まず、以下のコードを書きを実行したら、「419のHTTPステータスエラー」が出た。

###ビュー

“`php:sample.blade.php 

タイトル

ようこそ!{{$msg}}さん

名前を入力してください


“`

###ルーティング

“`php:web.php
Route::get(‘/sample’, ‘SampleController@test’);
Route::post(‘/sa

元記事を表示

Laravelのartisanコマンドでルートを検索する(オプションまとめ)

# 概要

業務内で、Laravelで書かれているソースコードを読んでいる時に、ルーティングを効率的に検索する必要に迫られることがあります。ですので、オプションを使って効率的に検索する方法をまとめてみました。

## ルート一覧の表示方法

“`comandline
php artisan route:list
“`

## ルートをパスから探す

“`
php artisan route:list –path==api/user/like
“`
“`
+——–+——–+—————+——+———————————————-+————+
| Domain | Method | URI | Name | Action | Middleware |
+——–+——–+—————+——+—————-

元記事を表示

Vagantを使ってLaravelを動かす

# はじめに
初学者が最初に躓きやすいと言われる環境構築ですが手順をしっかり追い、そこで何が行われているを簡単にイメージすることが大事だと痛感しました。
そこで私的メモ程度に構築手順を書き記します。
あくまで私の環境ではこの手順で動くものであって、全員がこれで動くとは限らないので参考程度でお願いいたします。
また初学者であるがゆえに問題点があるかと思います。修正箇所やご指摘いただけると幸いでございます。

# この記事でやること
1. vagarantを使ってcentOS環境の構築。
2. その環境下でPHP、Laravel、MySQLを導入。
3. Nginxを立ち上げ、プロジェクトにログイン機能を実装する。

# 今回使うもの

– Vagrant
– vbguest
– CentOS7
– Nginx
– PHP7.3
– Laravel6.x
– MySQL5.7

上記に接続できる環境があることを前提に手順を追っていきます。

# 環境を構築してゆく

## 作業ディレクトリの準備

まずは仮想環境に接続できる作業スペースを作成していきます。

ターミナル上でLinux

元記事を表示

オブジェクト指向(PHP)

#オブジェクト指向とは

**オブジェクト指向**とは、システムの作り方の一種。
ちなみにシステムとは、個々の要素が相互に影響しあいながら全体として機能する纏まりのことであり、クラス同士を組み合わせて作られていくものである。

例えば、一つのシステムを構築するソースコードを、一つのクラス内に書こうと思えば全てを記載することが可能であるが、コードは冗長且つ複雑になるため可読性が低く、機能の変更や追加の必要性が生じた際に膨大な労力を生み出してしまうことが容易に想像できる。

そこで、役割ごとにクラスを作り分け、**『一つ一つのクラスを役割を持った物(オブジェクト)として扱おう』**として生み出されたのがオブジェクト指向である。

具体的に言うと、一つのパソコンには、キーボード、マウス、モニターなどの部品が存在する。

この部品にもそれぞれの役割があるように、役割を持った物ごとにクラスを作り分けておけば、キーボードが故障した際はキーボードクラスのソースコードを修正していけば良いし、新しい機能を付けたい時も対象となるクラスだけを変更すれば良いということである。

つまり、オブジェクト指向とは、

元記事を表示

PHP基本集(2)~クラス~

自分の学習用です:santa_tone1:

###クラスの定義方法
クラスとは、簡単にいうと設計図のようなもの。
オブジェクト指向(簡単に言うと現実世界の物に例える様にプログラムを組む思考)に倣って作成していく。

[オブジェクト指向(PHP)](https://qiita.com/ki-ra-co/items/85cfe773a2f85d4984c9)

漫画『ONE PIECE』の世界で例えるとすれば、海賊船のクラス(設計図)があったとする。

“`php

“`

###インスタンス
インスタンスとは、クラスを元に実際に具現化した実体である。
設計図を元に造船したようなものである。
インスタンスを生成する際は、「**$インスタンス名 = new クラス名( )**」と記述する。

“`php

元記事を表示

Eclipse 補完パターン追加方法

# はじめに

Eclipseには初期状態でも便利な補完パターンがいくつも登録されております。しかし、使っていると…

* これもあったりいいな~
* 他のテキストエディタではこれ補完してくれるのにEclipseではしてくれないのね…

と思うようになりました。
Eclipseでは補完パターンを簡単に追加変更削除をすることができますので、紹介します。

# やり方

ウィンドウ > 設定 > PHP > エディター > テンプレート

を開きます。すると補完パターンを見ることできます。ここから補完パターンの追加は勿論、既存の補完パターンをカスタムすることもできます。

# 例

私はよく[explode](https://www.php.net/manual/ja/function.explode.php)でカンマ区切りの配列を作るのですが、その場合…

**名前**
explode

**説明**
explodeカンマ

**コンテキスト**
php statemets

**パターン**
explode(“,”, $$${});${cursor}

を作成します。補完から*expl

元記事を表示

OTHERカテゴリの最新記事