PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワーク

3,802 views
3,624 views

Published on

PHPカンファレンス関西2014のLT発表、Yii Framework 2.0 遅れてきた5番目のフレームワーク です

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,802
On SlideShare
0
From Embeds
0
Number of Embeds
483
Actions
Shares
0
Downloads
8
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワーク

  1. 1. Yii Framework 2.0 遅れてきた5番目のフレームワーク
  2. 2. たなかひさてる @tanakahisateru Pinoco developer PHPTAL contributor Firebug translation contributor Yii framework user PhpStorm user フルスタックエンジニア(笑)
  3. 3. 弊社開発中このサービスで使っているのが…
  4. 4. 2.0 beta
  5. 5. ご存知ですか? 海外ではSymfonyやCakePHPに並 ぶポピュラーなフレームワーク ! 2.0 beta をそろそろ使い始めても いいと公式に発表されている
  6. 6. Yii 1.1 • PHP 5.1.2 以上専用 • RHEL-5.10 と CentOS-5 のデフォルト = PHP 5.1.6 • 名前空間がなく、クラス名にCApplicationといったプレフィッ クスがあった • CakePHP同様、Arrayを多用する面倒があった • 遅延静的束縛がなかったため、ActiveRecordのインスタンス に find/save 系メソッドが存在した
  7. 7. Yii 2.0 beta • PHP 5.4 以上 • ショートArrayシンタックスでスッキリ • 名前空間の採用でクラス名がシンプルに • 静的メソッドがオーバーライドできるようになって、 ActiveRecord::find()->… が可能に • 1.1のイライラが全て解消されました
  8. 8. 一言でいえば RAD (Rapid Application Development) の最右翼
  9. 9. RADの最右翼ってどういうこと? • ブラウザ内で動くコード生成ツール • 十分なデバッグツールが初期インストール済み • きわめてIDE (とくにPhpStorm) フレンドリー • フレームワークに jQuery を統合済み • デフォルトのウィジェットが Twitter Bootstrap 3 ベース
  10. 10. プロジェクト構成 Rails系, PSR-4ベース PHPでいえばCakePHPに近い ! ただしこれは名前空間で自由に構成 可能 ↓ 規模の大きい開発にも十分
  11. 11. PHP5.4 ビルトインサーバーで試せる
  12. 12. いきなりここからスタート
  13. 13. DBからコード生成
  14. 14. 既存ファイルがあればdiff
  15. 15. ソート・フィルター可能生成だけでここまでできる
  16. 16. Easy? • FuelPHP / Latavel よりずっと枠組みが強い • スクラッチで書き起こす作業は少なく、新しいことを やる場合もやり方が決まっている • PHP on Rails 感 • ※テーブル名に複数形とか単数形とか日本人向きじゃないルールはありません
  17. 17. Hard? • PHPオブジェクト指向に対して非常に誠実な設計 • コンフィグが階層的な DI コンテナ定義のよう • コンポーネントの抽象化が適切 • フレームワークのどの部分でも独自実装に置換可能 • ただし、Symfony ほどの多クラス主義ではない
  18. 18. Pragmatic ! • デザインパターンや規約よりも、動くシンプルなコー ドを優先。余計なものは入れない主義 • MongoDB の ActiveRecord や OAuth プロバイダ対応な どの拡張が、フレームワークコアと並行して開発され ている • はじめから SwiftMailer を採用 • 全部入りですぐに実用ツールが作れる
  19. 19. 国内の ユーザーコミュニティ • Qiita にて 1.1 ベースでアドベン トカレンダー2012完走 • 本家への貢献者は案外関西に多め • 某大手サービスや関西の新進気鋭 ベンチャーで1.1が採用されてい るらしい • 関西PHPユーザー会で普及のきざ し • そして日本ユーザー会サイト
 YiiJan.org
  20. 20. YiiJan.org Error 503 orz
  21. 21. 2.0 での ActiveRecord • Eloquent ORM に似た ActiveRecord に変更された • 結果セットはプレーンな ActiveRecord[ ] 型 • IDEフレンドリー • いちどに結果を得る以外に… • ページング等は別途DataProviderクラスを使用 • バッチ処理でメモリ消費が高い場合には ->each()
  22. 22. public function actionDailyBackup() { $today = new DateTime(); $today->setTime(0, 0); ! /** @var Post[] $models */ $models = Post::find()->where("updated_at > :today", [ ':today' => $today->getTimestamp() ])->orderBy('id')->all(); ! foreach($models as $model) { Yii::info("Storing " . $model->title); $this->sendToStorage($model); } }
  23. 23. 引き継がれている長所 • コンポーネント、イベント、ビヘイビア等の一貫性 • コンフィグ Array はオブジェクトのプロパティに対応 • ビューのウィジェット設定もオブジェクトのプロパティ にぴったり対応
  24. 24. Application config/*.php
  25. 25. config/*.php
  26. 26. ほとんどの場合、実装クラスの doc コメントが あればマニュアル不要 ! PhpStorm の F1 キー / Option + Space が便利
  27. 27. 引き継がれている長所 • CSS / JS アセット管理をフレームワーク統合 • HTMLのGUIウィジェットを使うだけで、必要な CSS/ JS が公開/リンクされる
  28. 28. class ActiveFormAsset extends AssetBundle { public $sourcePath = '@yii/assets'; public $js = [ 'yii.activeForm.js', ]; public $depends = [ 'yiiwebYiiAsset', ]; }
  29. 29. <?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'title')->textInput(['maxlength' => 255]) ?> <!-- 以下略 --> <script src="/assets/2e597f3c/jquery.js"></script> <script src="/assets/26cbb072/yii.js"></script> ! <script src="/assets/26cbb072/yii.validation.js"></script> <script src=“/assets/26cbb072/yii.activeForm.js"></script> ! <script src=“/assets/a8c5b3b0/js/bootstrap.js"></script> ! <script type="text/javascript">jQuery(document).ready(function () { jQuery('#w0').yiiActiveForm(...); }); </script> ! </body> </html> ビューで何かウィジェットを使うだけで 依存関係を追って、HTML に 必要な JS/CSS が勝手に挿入される
  30. 30. フロントエンドまで含んでフレームワーク まさにフルスタック
  31. 31. ありがとうございました

×