Laravel勉強メモ
2016年12月28日
PHPのフレームワークの「Laravel」の勉強メモです。
Laravelとは
PHPのフレームワーク。
日本でも人気が上がってきているが、海外で特に人気がある。
モダンな要素が取り入れられている?
フレームワークを勉強するに渡って有名な「Cake PHP」も良いと思ったのですが、最近人気があるというLaravelについて学習してみることにしました。
Laravelを使用するにあたって
PHPの5.4以上が必要で、「mcrypt」のライブラリをインストール必要がある。
インストールするために「Composer」が必要になる。
ComposerとはPHPのライブラリの依存関係を管理するためのもの。
通常はライブラリはPHP全体に影響するため依存関係の管理が大変だが、コンポーザーの場合プロジェクトごとにライブラリを管理するため依存関係について対処しやすい。
Laravelのインストールと初期設定
インストール時してプロジェクトを作成する。
プロジェクト名のフォルダができ、その中にLaravelの必要なファイル一式がダウンロードされる。
ちなみに、ローカル環境に作成してもいいが、仮想環境を作成する場合は、Larravelには専用の仮想環境を構築するツールの「Laravel Homestead」があるので使うと便利。
Homesteadは、Vagrant + Virtual Boxと同じといえば同じなのだが、Laravelが導入しやすいように最適な環境を構築しやすい。(あると便利なものが一式最初から準備されている)
最初にやること
プロジェクトで必要となるデータベースとデータベースユーザを作成する。
データベースが必要ない場合は必要なし。
データベースを作った場合はプロジェクト内のコンフィグファイル内にデータベースへの接続情報を追記する。
「.env 」が環境ファイルなので開いてデータベース情報を追記する。
artisan(アルチザン)のマイグレーションコマンドを使って、テーブルを作成する。
アルチザンというのは、Laravelに予め準備されたシェルスクリプトのようなもので、コマンドラインで様々な処理を実行することができる。
php artisan make:migration マイグレーション名 –create=テーブル名
上記のコマンドを実行することで、/database/migrations/ 内にマイグレーション用のPHPファイルが作成される。
作成されたマイグレーションファイルを開いて、テーブルのカラム名などを追記する。
デフォルトでは主キーと、タイムスタンプのカラムが設定されている。
php artisan migrate
コマンドで、マイグレーションが実行され、上記マイグレーションフォルダ内に入ったマイグレーションPHPファイルが実行される。
一般的な方法であれば、phpmyadminからテーブルを作成したり管理するが、Laravelではマイグレーションコマンドと設定ファイルでテーブル構造を管理できるかんじといったところ。
しかし、見た感じややこしい。
こんなマイグレーションを使ってコマンドラインでどうこうするより、phpmyadminを使って管理するほうが簡単な気がしてならない。
このあたりはLaravel使う恩恵は微妙といったところかな…。
いろいろやってると「php artisan migrate」実行時によく分からないエラーが
Base table or view not found:
なんだこれ
php artisan migrate:refresh
これで全部解決しました。すべてのマイグレーションを再実行するかんじかな。
php artisan migrate:rollback
上記はロールバック用のコマンドで、最後に行ったマイグレーションをロールバックする
php artisan migrate:reset
すべてのマイグレーションをロールバックする
まあいずれにしてもややこしい。phpmyadminがシンプルでいいです・・・。
モデルの作成
php artisan make:model モデル名
これでモデルを作成
これで app ディレクトリ以下に、作成したモデル名のPHPファイルができている。
モデルは基本的にはデータベースのテーブルと対応した名前をつける。
例えば「users」テーブルの場合、モデルは「User」とすることで、自動的にテーブルとモデルが関連付けされる。
モデルオブジェクトとコントローラで呼び出すことで、テーブルから値を取り出したり保存したりする処理がしやすくなる。
対応するモデルをオブジェクトを呼び出すと、テーブルの項目名の変数を持つので、そこからデータベースに保存するといった処理がシンプルになる。
tinkerコマンド
Tinkerは、コマンドラインで操作できるようになるコマンド。
tinkerコマンドでモデルのオブジェクトを作成して、コマンド形式を使ってテーブルに値を挿入したりすることもできる。
プログラムを書く前に処理を試すことができる他、コマンドラインで直接データベースに値を保存したりすることもできる。
php artisan tinker
ルーティング
ルーティングとは、指定したURLに対してどういった動作をするかをphpファイルの中に書き込んでいくこと。
設定方法はLaravelのバージョンによって異なってくる。
自分の環境はlaravelのバージョンが5.3系なので、サイトのルーティングは
/routes/web.php
に行う。
ここに指定したURLに対しての処理を書き込んでいくと、URLにアクセスしたときに指定した処理を行う。
テンプレートを読み込ます場合は、viewファイルを読み込む。
ここで、URLにIDなどの動的なパラメータ(変数)を渡すこともできるのだが、テスト環境(Mac、Appache)では動作しなかった。
確認してみると、 /private/etc/apache2/httpd.conf の AllowOverride All にすべて変更すると
動作するようになった。(.htaccessはLaraberl上にあるので、サーバの設定が許可する設定になっていないといけない)
view
viewというのは要はテンプレートファイルのこと。
/resources/views/
以下に追加していく。
このテンプレートファイルにhtmlやphpのロジック部分を基本は記述していき、ルーティングファイルやコントローラから読み込むという流れ。
Larabelではbladeテンプレートというテンプレートの形式を利用する。
共通部分のviewファイルは別に作成しておき、個別ページごとのテンプレートファイルから読み込んで変数や動的な部分を埋め込んでいくイメージにしていくと効率が良い。
コントローラー
コントローラーは、サイトの処理を担当する部分。
viewでHTMLのテンプレートを担当し、コントローラーでは処理を担当する。
基本的には route で url と コントローラを指定
↓
コントローラでモデルやリクエストを読み込んで処理を行い、テンプレートを呼び出すという流れ
artisan make:controller コントローラー名
でコントローラーを作成することで、 app/Http/Controllers
以下にファイルが生成されるので、編集することで処理を追加できる。
laravel5.3系の場合、web.phpで、ルーティングでURLで指定した処理で呼び出すコントローラを指定する。
viewとコントローラーを切り分けることで、デザイン(デザイナ担当)の部分と処理の部分(プログラマ担当)を切り分けることができる。
Laravelに関する考察
Artisanコマンドは便利なのか?
Laravelを学ぶ上で、Artisanコマンドは出てくるが、要するに覚えるとシェルのようなかんじで特定の処理を簡単に実行することができる。
しかし、例えば
php artisan make:controller controller名
これは、結局Controllerフォルダにあるファイル名のひな形を作っているだけなので、
もともとある既存のコントローラーファイルをコピーペーストするのと同じである。
そのため、コピペするのと、artisanコマンドで作成するのとどちらが早いかというと、ぶっちぇけコピペするほうが早いとも言える。
そのため、必ずしもテンプレ通りにartisanコマンドを実行しないといけないかというと、使わずにやったほうが早い場合もあるといえる。
認証
認証を導入するには、以下のコマンドを実行する。
php artisan ui vue --auth
これだけ