Soumettre la recherche
Mettre en ligne
Laravel5を使って開発してみた
•
8 j'aime
•
13,536 vues
Takeo Noda
Suivre
Laravel5を使って開発した話を紹介します。開発導入の参考になれば幸いです。
Lire moins
Lire la suite
Logiciels
Signaler
Partager
Signaler
Partager
1 sur 32
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
laravel x モバイルアプリ
laravel x モバイルアプリ
Masaki Oshikawa
behatエクステンションの作り方
behatエクステンションの作り方
Ryo Tomidokoro
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
leverages_event
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
アシアル株式会社
ディレクションのすゝめ
ディレクションのすゝめ
Takeo Noda
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
Syouta Tada
Laravelの認証について
Laravelの認証について
Takeo Noda
Recommandé
laravel x モバイルアプリ
laravel x モバイルアプリ
Masaki Oshikawa
behatエクステンションの作り方
behatエクステンションの作り方
Ryo Tomidokoro
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
leverages_event
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
アシアル株式会社
ディレクションのすゝめ
ディレクションのすゝめ
Takeo Noda
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
Syouta Tada
Laravelの認証について
Laravelの認証について
Takeo Noda
REST with Spring Boot #jqfk
REST with Spring Boot #jqfk
Toshiaki Maki
flyingV Laravel & AWS 經驗分享
flyingV Laravel & AWS 經驗分享
Eugene Wang
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
Kenichi Mukai
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
Masashi Shinbara
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
Toshiaki Maki
Maven基礎
Maven基礎
Toshio Takiguchi
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Tasuku Otani
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
Toshiaki Maki
Laravel5.1をつかったWebアプリケーション開発
Laravel5.1をつかったWebアプリケーション開発
kan-notice
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
Tasuku Otani
Redmine Ansible
Redmine Ansible
ITO Yoshiichi
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
KUNITO Atsunori
第104回 php勉強会@東京 Laravel
第104回 php勉強会@東京 Laravel
JunKeun Lee
REACT & WEB API
REACT & WEB API
Shigeru Kondoh
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
Tomomi Kawabe
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
Hideo Takahashi
LaravelでAPI定義を管理する
LaravelでAPI定義を管理する
Kenjiro Kubota
Service Workerとの戦い ~ 実装編 ~ #scripty03
Service Workerとの戦い ~ 実装編 ~ #scripty03
Yahoo!デベロッパーネットワーク
誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方
666oh666
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
ichikaway
OSC福岡 20111203
OSC福岡 20111203
Hiroshi Bunya
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
Contenu connexe
Tendances
REST with Spring Boot #jqfk
REST with Spring Boot #jqfk
Toshiaki Maki
flyingV Laravel & AWS 經驗分享
flyingV Laravel & AWS 經驗分享
Eugene Wang
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
Kenichi Mukai
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
Masashi Shinbara
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
Toshiaki Maki
Maven基礎
Maven基礎
Toshio Takiguchi
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Tasuku Otani
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
Toshiaki Maki
Laravel5.1をつかったWebアプリケーション開発
Laravel5.1をつかったWebアプリケーション開発
kan-notice
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
Tasuku Otani
Redmine Ansible
Redmine Ansible
ITO Yoshiichi
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
KUNITO Atsunori
第104回 php勉強会@東京 Laravel
第104回 php勉強会@東京 Laravel
JunKeun Lee
REACT & WEB API
REACT & WEB API
Shigeru Kondoh
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
Tomomi Kawabe
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
Hideo Takahashi
LaravelでAPI定義を管理する
LaravelでAPI定義を管理する
Kenjiro Kubota
Service Workerとの戦い ~ 実装編 ~ #scripty03
Service Workerとの戦い ~ 実装編 ~ #scripty03
Yahoo!デベロッパーネットワーク
誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方
666oh666
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
ichikaway
Tendances
(20)
REST with Spring Boot #jqfk
REST with Spring Boot #jqfk
flyingV Laravel & AWS 經驗分享
flyingV Laravel & AWS 經驗分享
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
Maven基礎
Maven基礎
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
Laravel5.1をつかったWebアプリケーション開発
Laravel5.1をつかったWebアプリケーション開発
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
Redmine Ansible
Redmine Ansible
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
第104回 php勉強会@東京 Laravel
第104回 php勉強会@東京 Laravel
REACT & WEB API
REACT & WEB API
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
LaravelでAPI定義を管理する
LaravelでAPI定義を管理する
Service Workerとの戦い ~ 実装編 ~ #scripty03
Service Workerとの戦い ~ 実装編 ~ #scripty03
誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
Similaire à Laravel5を使って開発してみた
OSC福岡 20111203
OSC福岡 20111203
Hiroshi Bunya
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
はじめてのCodeIgniter
はじめてのCodeIgniter
Yuya Matsushima
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fumiya Sakai
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
アシアル株式会社
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
JavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjug
Yahoo!デベロッパーネットワーク
実演 AppExchange アプリケーション ライフサイクル
実演 AppExchange アプリケーション ライフサイクル
Takahiro Kawabata
Heroku Inside
Heroku Inside
Ayumu Aizawa
Developer-Controlled Packages (DCPs) を試してみた
Developer-Controlled Packages (DCPs) を試してみた
Takahiro Kawabata
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018
Uemura Yuichi
Salesforce DUG meetup09 summer15
Salesforce DUG meetup09 summer15
Ikou Sanuki
Rails基礎講座 part.2
Rails基礎講座 part.2
Jun Yokoyama
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Shinya Nakajima
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
DIVE INTO CODE Corp.
Struts2を始めよう!
Struts2を始めよう!
Shinpei Ohtani
UnicastWS vol.2
UnicastWS vol.2
Unicast Inc.
Similaire à Laravel5を使って開発してみた
(20)
OSC福岡 20111203
OSC福岡 20111203
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
はじめてのCodeIgniter
はじめてのCodeIgniter
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
JavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjug
実演 AppExchange アプリケーション ライフサイクル
実演 AppExchange アプリケーション ライフサイクル
Heroku Inside
Heroku Inside
Developer-Controlled Packages (DCPs) を試してみた
Developer-Controlled Packages (DCPs) を試してみた
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018
Salesforce DUG meetup09 summer15
Salesforce DUG meetup09 summer15
Rails基礎講座 part.2
Rails基礎講座 part.2
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
Struts2を始めよう!
Struts2を始めよう!
UnicastWS vol.2
UnicastWS vol.2
Plus de Takeo Noda
スタートアップにやさしいAWS
スタートアップにやさしいAWS
Takeo Noda
Vue入門
Vue入門
Takeo Noda
Prometeusについてはじめてみよう / Let's start Prometeus
Prometeusについてはじめてみよう / Let's start Prometeus
Takeo Noda
負荷テスト入門
負荷テスト入門
Takeo Noda
データ解析入門
データ解析入門
Takeo Noda
Zabbixで学ぶ統計解析入門
Zabbixで学ぶ統計解析入門
Takeo Noda
Laravelとテストについて
Laravelとテストについて
Takeo Noda
Zabbix入門
Zabbix入門
Takeo Noda
映像・音響機材入門
映像・音響機材入門
Takeo Noda
サイト運用者に向けたバージョン管理について
サイト運用者に向けたバージョン管理について
Takeo Noda
Plus de Takeo Noda
(10)
スタートアップにやさしいAWS
スタートアップにやさしいAWS
Vue入門
Vue入門
Prometeusについてはじめてみよう / Let's start Prometeus
Prometeusについてはじめてみよう / Let's start Prometeus
負荷テスト入門
負荷テスト入門
データ解析入門
データ解析入門
Zabbixで学ぶ統計解析入門
Zabbixで学ぶ統計解析入門
Laravelとテストについて
Laravelとテストについて
Zabbix入門
Zabbix入門
映像・音響機材入門
映像・音響機材入門
サイト運用者に向けたバージョン管理について
サイト運用者に向けたバージョン管理について
Laravel5を使って開発してみた
1.
Laravel5を使って開発してみた 2015/06/27 株式会社セブンメディア 野田健夫
2.
2こんにちは! 野田健夫(のだたけお) https://twitter.com/nodatakeo https://www.facebook.com/nodatakeo 株式会社セブンメディア チーフアーキテクト
3.
3会社について ■社名 株式会社セブンメディア(英語表記: Sevenmedia,Inc.) ■所在地
〒108-0073 東京都港区三田3-9-7 三田三好ビル5F ■設立 2011年9月 ■代表取締役 田村 順一 東京オフィス 福岡オフィス
4.
4使っているサービス・技術要素 ※ほかにもいろいろありますが、主なものを抜粋
5.
5今日お話しする内容 1. 作成したアプリケーション 2. Laravel5について 3.
Laravel5を採用した理由 4. 環境構築手順 5. 全体像(リクエストライフサイクル) 6. 開発フローについて 7. 各種開発TIPS 8. 速度改善について 9. まとめ
6.
6作成したアプリケーション アプリ(Web API) 管理画面 Kinyta
という雑誌テイストのコーディネートを楽しむiPhone/Androidアプリ!
7.
7Laravel5について • PHPでよく知られるMVCフレームワークの1つ。 • MITライセンス。 •
2011/06に初版リリース。Taylor Otwell 氏に よって開発。 • 2015/02にL5がリリース。 • 2015/06にLTS(LongTermSupport)のL5.1がリ リース。PHP5.5.9以上に対応。
8.
8Laravel5を採用した理由 • 開発効率が上がりそう! • DIのコンストラクタ/メソッドインジェクションができる! •
アノテーションでルーティングができる! • デバッガーが便利そう! • 公式サイトにドキュメントが一通りある! 懸念は… • 5.0という大きなバージョンアップの直後。4.0からいろいろ変わってる。。 • Laravelは処理が重たいというイメージ。
9.
9DIについて • DIは、Dependency Injectionの略で「依存性の注入」。 •
マーティン・ファウラー氏によって提唱。 • 外部の設定ファイルなどでオブジェクトを定義し、注入することができ るソフトウェアパターン。 • LaravelではProvidersの実装で登録することによって実現。 • フレームワークコア部分については、拡張できるようApplicationクラス でContractsというインターフェイスとFacadeという実装プロクシを使っ て登録。 L5では、コンストラクタ/メソッド を通じてオブジェクトを注入 Auth Laravel5 /** * お知らせ通知APIコントローラー * @Middleware("api.key.auth") */ class NoticeController extends Controller { /** * @return string */ public function __construct( ) { $this->auth = $auth; } Auth $auth
10.
10アノテーションについて プログラムにコメント/タグ付けといったメタ情報を付与することで機能や 属性を持たせる記述方法。 Laravel5では、routingやeventにアノテーションを使用可能。 /** * お知らせ通知APIコントローラー * @Middleware(“apikey.auth") */ class
NoticeController extends Controller { /** * ユーザーのお知らせ内容を検索して取得する * @Get("notices") * @Middleware("user.auth") * @return string */ public function getNoticeSearch() { : } } Middleware: apikey.auth, user.auth URI: http://webapi.hogehoge.jp/notices アノテーションの内容が Routingに関連付けされる
11.
11Laravel5の環境構築手順 1. composerのインストール mkdir -p
~/bin cd ~/bin curl -sS https://getcomposer.org/installer | php ln -s composer.phar composer vi ~/.bash_profile PATH=$PATH:$HOME/bin:~/.composer/vendor/bin 2. Laravelのインストール yum -y install git composer global require "laravel/installer=~1.1" 3. Laravelのアプリを作成 cd /usr/local/apache2 laravel new (アプリ名) chmod 777 -R (アプリ名)/storage 4. 初期設定 cd /usr/local/apache2/(アプリ名) .env ファイルの編集(※環境に合わせて適宜) 環境構築はコマンドベースでOK ※ZipArchive not foundが表示される場合は、pecl install zipで追加。
12.
12Laravel5推奨パッケージ "require": { "laravel/framework": "v5.1.6“, "laravelcollective/annotations":
"~5.1”, “laravelcollective/html”: “~5.1", "barryvdh/laravel-debugbar": "~2.0" }, Laravel Collective Annotations/Form&HTML Laravel Debugger composer.jsonの追加例 composer update ライブラリの環境構築も composerで楽々 インストール手順
13.
13Laravel5リクエストライフサイクル index.php (1)フロントコントローラー controller model view app providers request 参考 http://laravel.com/docs/master/lifecycle response bootstrap (3)リクエスト⇒レスポンス処理 services (4) コンテナに登録し、 サービスを起動 (2)フレームワークを読み込み middleware router (5)リクエストをフィルター+ルーターへ auth (6)
Controllerを呼び出し (7)レスポンス処理(テンプレートエンジン等) HttpKernel
14.
14Laravel5のフォルダ構成 ├─app (アプリケーションフォルダ) │ ├─Bootstrap │
├─Console │ │ └─Commands (バッチ実装) │ ├─Events │ ├─Exceptions │ ├─Handlers │ │ ├─Commands │ │ └─Events │ ├─Http │ │ ├─Controllers (コントローラー) │ │ ├─Middleware (フィルター) │ │ └─Requests (フォーム系リクエスト) │ ├─Providers (サービスプロバイダー) │ └─Services : : ├─bootstrap ├─config (アプリケーション設定ファイル) ├─database │ ├─migrations (DBマイグレーション) │ └─seeds ├─public (ドキュメントルート) │ └─css ├─resources │ ├─assets │ │ └─less │ │ └─bootstrap │ │ └─mixins │ ├─lang │ │ └─en │ └─views (テンプレートファイル) ├─setting ├─storage │ ├─app │ ├─framework │ │ ├─cache │ │ ├─sessions │ │ └─views │ └─logs (ログ出力先) ├─tests └─vendor (コアフレームワーク、ライブラリなど) appフォルダ直下にデータアク セスオブジェクトを配置するの が、L5の流儀。
15.
15開発フロー 1. Model/Migration 追加 2.Controller追加 3. Routing設定 4.
View追加 5. 実装 6. テスト
16.
16CLI: artisan Laravel3よりコマンドラインインターフェイス artisan
追加。 アプリケーションのルートディレクトリでコマンド実行することで開発をサポート。 php artisan make:model (モデル名) ⇒ app/(モデル名).php およびdatabase/migrations以下に マイグレーションファイルを作成 php artisan migrate:status ⇒ DBマイグレーションの状態チェック php artisan migrate ⇒ DBマイグレーションの反映 1. Model/Migration追加 アルチザン
17.
17CLI: artisan php artisan
make:controller (コントローラー名) ⇒ app/Http/Controllers 以下にクラスファイルを作成 php artisan route:scan ⇒ ルーティングの情報を再読み込みして更新 ⇒ storage/framework/route.scanned.phpにキャッシュを生成 2. Controller追加 3. Routing設定 1) コントローラーにルーティングのアノテーションを記述。 2) app/Providers/AnnotationsServiceProvider.phpの$scanRoutesにコントローラクラスパスを追記。 アルチザン
18.
18開発TIPS 1. デバッガーについて 2. ログについて 3.
バリデーションについて 4. BLOB型のデータ操作について 5. バッチについて
19.
19開発TIPS:デバッガーについて デバッガーを有効にすると左下に出てくるLaravelアイコンをクリック SQLクエリ実行速度 ルーティング情報 アプリケーション実行時間情報 読み込みファイル一覧 接続履歴 パフォーマンスチューニングやデバッグで超使える!
20.
20開発TIPS:ログについて Log::info(‘ログ内容’); Log::warn(‘ログ内容’); Log::debug(‘ログ内容’); Log::error(‘ログ内容’); などRFC5424で定義されている7レベルをサポート /storage/logs/laravel-YYYY-MM-DD.log に出力 すべて 任意のファイルにログファイルを出力したいときは、同梱されているログライブラリ Monologを使って独自実装。 public static function
writeLog($level, $message) { $log = new MonologLogger(MonologLogger::INFO); $log->pushHandler( $handler = new RotatingFileHandler( storage_path() . '/logs/'. $level. '.log', 365, MonologLogger::INFO ) ); $formatter = new LineFormatter("[%datetime%]¥t".$_SERVER['REMOTE_ADDR']."¥t%message%¥t%context%¥t%extra%¥n", null, true, true); $handler->setFormatter($formatter); $log->addInfo($message); } ※config/app.php の ‘log’=>’daily’の場合
21.
21開発TIPS:バリデーション(値検査)について use ValidatesRequests; 方法1: ValidatesRequestトレイトを差し込んでバリデーション $this->validate($request,
$rules, $messages); 方法2: Validatorファサード(コンテナクラス)を使って明示的にバリデーション $validator = Validator::make(Input::all(), $rules, $messages); $validator->setAttributeNames($attributes); if ($validator->fails()) { return redirect(‘books/create’)->withErrors($validator)->withInput(); } // continue processing... ※前のページに戻る処理がValidatesRequestsトレイト内で実装されている。 日本語に対応させるためにはこれをベースに拡張することで可能。
22.
22開発TIPS:BLOB型のデータ操作について BLOB型は、フレームワークとしてはまだ未サポート。プリペアドステートメントを自分で 作ってbindValue(保存時)/bindColumn(取得時)することで、操作可能。 $conn = $this->getConnection(); $grammar
= $conn->getQueryGrammar(); $query = new QueryBuilder($conn, $grammar, $conn->getPostProcessor()); $query->from($this->getTable()); $attributes = $this->getAttributes(); $sql = $grammar->compileInsert($query, $attributes); $stmt = $conn->getPdo()->prepare($sql); $id = 1; foreach ($attributes as $key => $value) { if ($key == 'data') { $stmt->bindValue($id, fopen($value, 'rb'), PDO::PARAM_LOB); } else { $stmt->bindValue($id, $value); } $id++; } $stmt->execute(); 保存時の例:
23.
23開発TIPS:バッチについて Command追加 artisanでコマンドを追加。artisanからコマンドを実行。 php artisan make:console
(コマンドクラス名) –-command=(コマンド名) app/Console/Commands/(コマンドクラス名).phpを追加。 app/Console/Kernel.phpの$commandsプロパティにクラスパスを追加す ることでartisanから(コマンド名)を実行可能。 Command実行 php artisan (コマンド名) ⇒ コマンドクラスのfireメソッドの内容が実行されます。
24.
24Laravel5の速度改善について 1. opcacheの有効化 2. フレームワークキャッシュの適用 3.
アプリケーションキャッシュの組み込み ※他にHHVM(HipHopVM)も速度改善の候補してあるが、CentoOS環境 だったこともあり、今回は未調査。 オペキャッシュ
25.
25速度改善(1):opcacheについて 114.77ms 34.51ms レスポンスは、2~3倍程度早くなる。 適用前 適用後 オペキャッシュ
26.
26速度改善(1):opcacheについて opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=5000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1 opcache.validate_timestamps=1 opcache.revalidate_freq=60 60秒ごとにスクリプトのタイムスタンプをチェックし、キャッシュを更新 php.ini設定例: オペキャッシュ
27.
27速度改善(2):フレームワークキャッシュの適用 php artisan config:cache
設定ファイルのマージ。 vendor/config.php(権限がない場合はstorage/framework/config.php)を作成。 php artisan config:clearでクリア。 php artisan optimize コアクラスのファイルをまとめる。 vendor/compiled.php(権限がない場合はstorage/framework/compiled.php)を作成。 bootstrap/autoload.phpから読み込んでいる。 php artisan clear-compiledでクリア。
28.
28速度改善(3):アプリケーションキャッシュの組み込み $top = Cache::remember('recentTop',
Config::get('cache.span'), function () { return Top::findRecent(); }); $top = Top::findRecent(); ‘recentTop’というキーのキャッシュがなければ、クロージャの中身を実行。 その内容をCongif::get(‘cache.span’)分間キャッシュで保持。 簡単に既存実装のキャッシュ化ができる。 例:TopモデルからfindRecentというメソッドでデータを取得。 Cacheクラスを適用する場合…
29.
29まとめ Laravel5の開発は楽しい! DI
Trait アノテーション フルスタックなフレームワーク。 composerにより外部の機能も取り込みやすい。 そのままでは遅い!…でも、opcacheやキャッシュ など組み合わせれば、使える、と思う!
30.
30補足: Laracast Laravel学習&コミュニティサイト
31.
31補足: Laravel求人サイト Laravel求人サイト
32.
32補足: 開発環境(laravel/homestead) vagrant box
add laravel/homestead git clone https://github.com/laravel/homestead.git Homestead bash init.sh Vagrantを使った開発環境も提供 • Ubuntu 14.04 • PHP 5.6 • HHVM • Nginx • MySQL • Postgres • Node (With Bower, Grunt, and Gulp) • Redis • Memcached • Beanstalkd • Laravel Envoy • Blackfire Profiler 参考 http://laravel.com/docs/5.0/homestead
Télécharger maintenant