Weitere ähnliche Inhalte
Ähnlich wie <第1回>Laravelハンズオンセミナー (20)
<第1回>Laravelハンズオンセミナー
- 2. <第1回>初めてのLaravel PHPフレームワーク講座で学べる
こと
❖ WEBフレームワークとは
❖ Laravelのここが良い
❖ Laravelの情報源と公式サイトの紹介
❖ Laravelを理解するために
❖ composerとは
❖ namespaceとは
❖ Laravelハンズオン!
❖ Laravelのインストール
❖ ローカル実行環境の作り方
❖ ビルトインサーバの起動
❖ コントローラの作成とルーティングの設定
❖ ビューの作成と表示
❖ データベースへのコネクション設定
❖ マイグレーションの作成と実行
❖ モデルの作成
❖ コントローラへ処理記述
ハンズオンの内容
- 8. <第1回>初めてのLaravel PHPフレームワーク講座
Laravelの情報源と公式サイト
❖ 公式サイト http://laravel.jp/
❖ ドキュメント https://readouble.com/laravel/
❖ Facebook
https://www.facebook.com/groups/laravel.j
p/
❖ Google+
https://plus.google.com/communities/11800
6056115330646882
❖ その他 teratail.com, stack overflowなどなど・・
- 24. <第1回>初めてのLaravel PHPフレームワーク講座
ルーティング設定
- Route::get('/', function () {
- return view('welcome');
- });
+ Route::get('/', 'ListController@index');
+ Route::get('delete/{id}', 'ListController@delete');
+ Route::get('input', 'PostController@index');
+ Route::post('post', 'PostController@post');
+ Route::get('detail/{id}', 'DetailController@index');
app / Http / routes.php
- 32. <第1回>初めてのLaravel PHPフレームワーク講座
スキーマの定義を記述①
public function up()
{
+ Schema::create('posts', function(Blueprint $table)
+ {
+ $table->increments('id');
+ $table->string('title');
+ $table->string('category');
+ $table->text('description');
+ $table->string('picture');
+ $table->softDeletes();
+ $table->timestamps(); // created_atとupdate_atカラムの追加
+ });
}
public function down()
{
+ Schema::drop('posts');
}
database / migrations /
xx_xx_xx_xx_create_table_posts
- 33. <第1回>初めてのLaravel PHPフレームワーク講座
スキーマの定義を記述②
public function up()
{
+ Schema::create('post_tugs', function(Blueprint $table)
+ {
+ $table->increments('id');
+ $table->integer('post_id');
+ $table->string('tug_name');
+ $table->timestamps();
+ });
}
public function down()
{
+ Schema::drop('post_tugs');
}
database / migrations / xx_xx_xx_xx_create_tab
- 36. <第1回>初めてのLaravel PHPフレームワーク講座
モデルの設定①
+ protected $table = 'posts';
+ protected $fillable = [
+ 'title',
+ 'category',
+ 'description',
+ 'picture'
+ ];
+ protected $dates = [
+ 'deleted_at',
+ 'created_at'
+ ];
+ public function tugs()
+ {
+ return $this->hasMany('AppPostTugModel', 'post_id', 'id');
+ }
app / PostModel
- 38. <第1回>初めてのLaravel PHPフレームワーク講座
コントローラロジック 一覧画面
use IlluminateHttpRequest;
use AppHttpRequests;
+ use AppPostModel;
public function index(){
+ $posts = PostModel::all();
- return view('list');
+ return view('list', compact('posts'));
}
public function delete($id){
+ $post = PostModel::find($id)->delete();
return redirect('/');
}
app / Http /Controllers / ListController.php
- 39. <第1回>初めてのLaravel PHPフレームワーク講座
コントローラロジック 新規登録①
use IlluminateHttpRequest;
use AppHttpRequests;
+ use AppPostModel;
+ use AppPostTugModel;
public function index(){
+ $view_name = '記事投稿';
- return view('input');
+ return view('input',compact('view_name'));
}
public function post(Request $inputs){
+ $post = PostModel::create([
+ 'title' => $inputs['title'],
+ 'category' => $inputs['category'],
+ 'description' => $inputs['description'],
+ 'picture' => $inputs['picture'],
+ ]);
+ $id = $post->id;
app / Http /Controllers / PostController.php
・・・続く
- 40. <第1回>初めてのLaravel PHPフレームワーク講座
コントローラロジック 新規登録②
+ foreach ($inputs['tugs'] as $key => $value) {
+ PostTugModel::create([
+ 'post_id' => $id,
+ 'tug_name' => $value,
+ ]);
+ }
+ return redirect('/');
}
app / Http /Controllers / PostController.php
- 41. <第1回>初めてのLaravel PHPフレームワーク講座
コントローラロジック 詳細画面
use IlluminateHttpRequest;
use AppHttpRequests;
+ use AppPostModel;
+ use AppPostTugModel;
public function index($id){
+ $post = PostModel::findOrFail($id);
+ $tugs = PostModel::find($id)->tugs()->get();
+ $view_name = $post->title;
- return view('detail');
+ return view('detail', compact('post', 'tugs', 'pagename', 'view_name'));
}
app / Http /Controllers / DetailController.php
Hinweis der Redaktion
- ■フレームワーク
実装するべき処理を、いくつかのパッケージを組み合わせて開発速度構築を容易
実装にはフレームワークのコーディングがルールが制約されますが、制約に従うことで実装を容易に
PHPに限った概念ではない
■MITライセンス
MITライセンスのもとで配布されているものは、改変でも、再配布でも、商用利用でも、有料販売でも、どんなことにでも自由に無料でつかうことができます。守らなくてはいけない条件は、「著作権表示」と「MITライセンスの全文」を記載する、という条件だけです。(なお、「MITライセンスの全文」を記載する代わりに、MITライセンスの全文が記載されているウェブページのURLを記載することも認められています。)
- Laravelが提供するコンポーネントは扱いやすい
代表格でページネートとバリデーションがある
独自のORMを実装しており、学習コストが低く可読性が高い
今回は触れないが、フレームワークで実装しているpackageや、実装したモジュールの単体テストがしやすい
FuelPHPやCakeなどのDirectory構造に強く制約はないのが扱いやすい
規約はゆるく、様々なデザインパターンに対応する
- 大きあメジャーバージョンアップは毎年ッて感じ。
LTSはメジャー長期サポートの意味、 2年間ごとにアップされる
LTS版はバグフィックスは2年間、脆弱性の対応は3年間、長期的なプロジェクトも安心
- ■pear(ペアー)
・インフラ部隊に依頼する必要がったりする
・ローカルとローンチ環境を統一しにくい
- namespaceは、BOM付きのutf-8で使用すると怒られます。
参考:http://www.slideshare.net/KosukeHorii/5-9037647