Bootstrap4とLaravel5.1でネットショップをリニューアルした
カレンダーの通販サイト E-カレンダー.comをリニューアルしたので、記録とし、まとめておこうと思います。
以下、リニューアル前の環境。
[リニューアル前]
- サーバーはGMOクラウドPublicのVPS
- Apache1.3系、PHP5.3、MySQL5系のよくある環境。
- WebアプリケーションフレームワークはZendFramework
- キャッシュはファイルキャッシュ
- HTML5とTwitterBootstrap2を使用してデザイン。
↓
なぜ、Laravel5.1に?
ZendFrameworkを全く触らなくなって、最新のバージョンで開発する気が全く起きなかった。
乗り換えるフレームワークとしてCakePHPやCodeIgniterなども検討したが、Composerによるパッケージ管理システムが気に入ってしまい、
それからはずっとLaravelを勉強し、今回のリニューアルを機に本格的に採用。
以下、Laravelの良い点。
- Composerでパッケージの管理がとても楽。依存関係もきっちり解決してくれる。
- ライブラリの追加がとっても楽。
- 従来通りのMVCパターンで開発できる(構築方法を強要されない)
- 開発環境と本番環境で設定ファイルを複数作る必要がない。.envファイルに本番環境用との差分を記述すればいいだけ。
- Eloquentはやっぱり便利。
- Redisとの相性がいい。
- Bladeテンプレートが簡単。
- AWSとの相性がいい。
- ドキュメントがわかりやすい。
と、まぁ、おおよそこんな具合。習得までの時間はさほどかからず、慣れてしまえばなんてことはなく、とても素晴らしいフレームワークだと思う。5.0系になって、ディレクトリ構造が見直され今まで存在していたmodelsディレクトリが削除されるなど、少し戸惑った部分はあったが、自分で作って、モデルファイルを入れておけば、従来通りのMVCパターンで構築できる。
Composerで便利だったパッケージ
- illuminate/html
- ViewファイルでのFormヘルパ
// テキストボックス {!!Form::text("name")!!} // エラーで入力画面に戻った場合 {!!Form::text("name",Input::old("name"))!!} // セレクトボックス {!!Form::select("pref",Config::get("site.pref")))!!}
- jenssegers/agent
//ブラウザのバージョン Agent::version(Agent::browser()); //スマートフォンかタブレットかの判定も可能 Agent::isMobile(); Agent::isTablet();
- webpay/webpay
- クレジットカード決済WebPayの公式パッケージ
- カードの情報からトークンを作成して、決済を行うサンプル
- クレジットカード決済WebPayの公式パッケージ
<?php // トークンの作成 $webpay = new WebPay('secret_key'); $token=$webpay->token->create(array( "card"=> array("number"=>"*********", "exp_month"=>01, "exp_year"=>2016, "cvc"=>"123", "name"=>"HOGE HOGE") )); // 決済 $webpay->charge->create(array( "amount"=>500, "currency"=>"jpy", "card"=> $token "description"=>"これで決済完了!" ));
- predis/predis
- Redisを利用する際に必須のパッケージ
- パッケージをインストールして、config/session.phpのdriverをredisに変更するだけ
- Redisを利用する際に必須のパッケージ
<?php 'driver' => 'redis', ?>
- league/flysystem-aws-s3-v2
- 商品画像をS3ストレージに保存する際に利用。
- 以下ローカルファイルをS3にアップロードするサンプル
// ローカルのディスクから画像データを取得 $local=Storage::disk("local"); $data=$localDisk->get("images/item/sample.jpg"); // S3ディスクにアクセスしてアップロード $s3=Storage::disk("s3"); $s3->put("images/item/sample.jpg",$data);
Laravelの悪い点
- PHP5.5.9以上じゃないと動かない
- 名前空間がいちいち面倒くさい
- オートロードに時間がかかる?