Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014

9,625 views

Published on

関西FuelPHP 2014 6/28

補足: 指摘を頂いて#15 バリデーション連携のところ修正しました。ありがとうございます!!

Published in: Business
  • Be the first to comment

FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014

  1. 1. フレームワーク4本勝負 #FuelPHP @mkkn_info
  2. 2. about me みかかね TW @mkkn_info PHPer @ Osaka マネキンと二人暮らし
  3. 3. about me みかかね TW @mkkn_info PHPer @ Osaka マネキンと二人暮らし
  4. 4. Fuel = “燃料”
  5. 5. CodeIgniter FuelPHP
  6. 6. FuelPHP CodeIgniterの流れを組みながら、上手いこといい感じにし たフレームワーク。 PHP 5.3以上対応 : July 31st, 2011 release 名前空間を用いたオートロードシステム クロージャのサポート 静的遅延束縛のサポートによる静的クラスの多用 脱レガシー。新しいPHPの書き方 最新バージョンは1.7。必要な機能はひと通り整ってきた かなぁ?という印象
  7. 7. Fuel = “PHP Framework”
  8. 8. FuelPHP http://fuelphp.com/
  9. 9. Controller 基本的なcontroller/action/param のURL構成 actionメソド内でreturnした文字列を出力 基本的な二階層レイアウトシステムをサポートする Controller_Template 配列をセットするだけで、柔軟にxmやjsonなどの応答を生 成してくれるController_Rest
  10. 10. Routing Routeファイルでルートを記述できる。 Controllerに縛られない自由なルーティング <?php //@config/routes.php return [ “hello => function() { return “hello world”; }, “blog/(:any)” => ”blog/entry/$1”, “:user/:package/profile“ => “api/profile”, ]; Controllerルーティングへのエイ リアス。 正規表現、後方参照も使える ルートURLから名前付きパラ メータを生成できる。
  11. 11. View 基本のパーサはテンプレートを読み込んで変数を割り当 てるだけのシンプルなもの 変数割り当て時の自動エスケープ デフォルトのPHPパーサでも十分使えるレベルに オプションで様々なタイプのパーサに対応 twigやらsmartyやら URL生成クラス、Asset管理クラス、HTMLクラス、Fieldset クラスなどサポートも充実
  12. 12. Database クエリビルダを扱うDBクラス 単一テーブルベースのCRUD処理を扱うModel_Crud リレーションを扱えるORMパッケージ DBやテーブルの生成などを扱うDBUtilクラス マイグレーションも一応ある
  13. 13. Database 名前付きパラメータが使えたり、結果の型が指定できた り。 <?php $sql = <<<SQL SELECT * FROM users WHERE name = :name SQL; $query = DB::query($sql)->bind("name",$name); $query = $query->as_object('Model_Users'); $res = $query->execute(); 名前付きパラメータ もう大量の ? の個数数えたりし なくていい。 変数を参照で割り当てられる。 結果の型は、連想配列、オブ ジェクトから選択できる。
  14. 14. Database お手軽なエンティティ作成にはModel_Crud class Users extends Model_Crud { static protected $_table_name = "users"; } $user = Users::find_by_pk(); $user = Users::find_one_by_name(“mikakane”); $user->email = “mikakane2@gmail.jp”; if(!$user->save()) { $validation = $user->validation(); $msg = $validation->show_errors(); 規約どおりならテーブル名のみ の設定でOK PK検索や列検索、には専用のメ ソドが用意される。 WHERE … IN やLIMIT,ORDER BY といった複雑な検索も対応 saveでUPDATE/INSERTされる。 バリデーション連携も
  15. 15. CLI Scaffolding機能 CLI実行用のTask ファイルを設置するだけでCLI実行ファイルが作成可能 CLI実行処理をサポートするCLIクラス モデルクラスをHTTPとCLIで共用可能。 ちょっとしたモデルのテストにも便利 PHPUnitのテストランナー
  16. 16. 今回話したいこと
  17. 17. Why FuelPHP?
  18. 18. FuelPHP http://fuelphp.com/
  19. 19. Simple Flexsible Community Driven
  20. 20. Fuel = “flexible”
  21. 21. 規約より設定 アンチ「設定より規約」 フレームワークが規約やお作法を強制 しない。 フレームワークに縛られない自由な開発スタイル ロジックや、インフラ側がフレームワークに合わせる必要はな い。 必要に応じて必要な分だけの機能を使えばいい 必要に応じて必要な分だけ学べばいい 学習コスト低め。 独自のオートロードシステムで、ほとんどのコア機能は書き換 え可能
  22. 22. 独自Autoloader Composer オートローダ Composerのオートローダ FuelPHP オートローダ ファイルパス=完全修飾クラス名の基本的な構造 クラスマップ+コア名前空間 特殊なエイリアス領域 フレームワーク独自のAutoloaderを採用
  23. 23. 独自Autoloader クラスエイリアスによる間接的なクラス参照 何をViewクラスとして扱うかをオートローダが制御する。 コアの機能だけでなく、独自定義クラスでもOK Viewクラス FuelCoreViewクラス コアのクラスは全て FuelCore名前空間に 定義されている。
  24. 24. 独自Autoloader クラスエイリアスによる間接的なクラス参照 何をViewクラスとして扱うかをオートローダが制御する。 コアの機能だけでなく、独自定義クラスでもOK Viewクラス FuelCoreViewクラス Viewクラスの参照を 切り替えれる。 Viewクラス エイリアス
  25. 25. 独自Autoloader クラスエイリアスによる間接的なクラス参照 何をViewクラスとして扱うかをオートローダが制御する。 コアの機能だけでなく、独自定義クラスでもOK Viewクラス FuelCoreViewクラス 切り替え後でもコアの Viewクラスは完全修飾 名で参照可能。 Viewクラス 継承 エイリアス
  26. 26. 独自Autoloader Viewクラスをカスタマイズする例 # app/classes/view.php class View extends FuelCoreView { protected function process_file($file_override=false) { $data = parent::process_file($file_override); return mb_convert_encoding($data,”UTF8”); } } # app/bootstrap.php Autoloader::add_classes([ "View" => APPPATH."classes/view.php", ]); コアのクラスはFuelCore名前 空間に定義されている。 必要な部分だけを拡張して記述 できる。 クラスマップに登録したら 使用準備完了
  27. 27. 独自Autoloader 自作クラスも同様に ProjectnameHogeのような形式で定 義しながら、Hogeクラスとして参照可能。 もちろん後からHogeクラスを作成して拡張可能 気に入らないコア/プラグインの機能はガンガン書き換え られる。 heroku向けにLogクラスを書き換え 独自パーサ機能の実装のためにViewクラスを書き換え 独自Validation機能の実装のためにValidationクラスを書き換え テストの時だけModelの機能を変更
  28. 28. Fuel = “simple”
  29. 29. Readable PHP5.3以上。互換性のための面倒なコードが存在しない。 機能入れ替え系の機能はオートローダ任せ。複雑なDIコ ンテナのコールは存在しない。 継続的開発の中でもSimpleさを持続する仕組み アプリケーションのモジュール分割
  30. 30. 分離 / 再利用の仕組み 継続開発におけるコードの依存関係管理は重大な問題 MVCのまとまりを一つのディレクトリ以下にまとめて、 分離したり共有したりできる。 Module  分割の仕組み。アプリケー ションを機能毎に分割。  特定のURLアクセス時に自 動的に読み込まれる Package  共有の仕組み。アプリケー ション全体に再利用可能な コードを適用  明示的な参照命令を記述し て読み込み
  31. 31. 分離 / 再利用の仕組み URLをベースに自動的に読み込まれるModule URLと紐づく依存構成で、アプリケーションの分離層を支 える。 MODULE MODULE MODULE APPLICATION PACKAGES CORE 上から下への参照 は比較的自由 下から上への参照 は制約あり
  32. 32. 分離 / 再利用の仕組み PHPファイル、設定ファイル、言語ファイル、 CLIタスクファイルをそれぞれのレイヤーで 機能毎にまとめて配置可能。 MODULE MODULE MODULE APPLICATION PACKAGES CORE MVC+α MVC+α MVC+α
  33. 33. 分離 / 再利用の仕組み リクエストに応じたモジュールの自動読み込み Blog APPLICATION PACKAGES CORE http://example.com/blog
  34. 34. 分離 / 再利用の仕組み リクエストに応じたモジュールの自動読み込み User APPLICATION PACKAGES CORE http://example.com/user
  35. 35. 分離 / 再利用の仕組み リクエストに応じたモジュールの自動読み込み Info APPLICATION PACKAGES CORE http://example.com/info
  36. 36. 分離/再利用の仕組み 柔軟なオートローダ クラス参照のスコープがリクエストURLに応じて 「動的に」切り替わる。 カスケードファイルシステム ファイル参照が複数箇所から階層的に行われる。 テンプレート、設定ファイル HMVCアーキテクチャ MVCのそれぞれを独立した要素として再利用可能。
  37. 37. 分離 / 再利用の仕組み 複数アプリケーション間で共有可能なパッケージ アプリケーション起動にフックするbootstrapファイルを含 むことが可能でCoreの機能まで上書き可能。 MODULE MODULE MODULE APPLICATION PACKAGES CORE MODULE MODULE MODULE APPLICATION 独自FW層
  38. 38. クラスはClassesディレクトリに、 テンプレートはViewsディレクト リに。 classesディレクトリや viewsディレクトリに機能毎のディレ クトリが出来上がっていく。
  39. 39. Moduleディレクトリに機能毎の ディレクトリを切って、その中 にクラスファイルやテンプレー トをまとめる。 一つの機能の実装/改修を進めるの に、必要なファイルが全て一つの場 所にまとまっている!!
  40. 40. Fuel = “Community Driven”
  41. 41. コミュニティ駆動 コミュニティ駆動のオープンソースフレームワーク(MIT ライセンス)。 日本人のユーザコミュニティ https://groups.google.com/forum/#!forum/fuelphp_jp ドキュメントの翻訳活動も活発 ドキュメントはgithubで公開されており、定期的に翻訳 ウィークが開催されています。
  42. 42. 日本語ドキュメント http://fuelphp.jp
  43. 43. FuelPHP まとめWiki http://wiki.fuelphp1st.com/wiki/
  44. 44. FuelPHP日本語ニュース https://www.facebook.com/jp.fuel
  45. 45. Meet-up in 2013 2013/12/07 [東京] FuelPHP & CodeIgniter ユーザの集い #2 2013/10/26 FuelPHP 勉強会 東海 vol.5 2013/10/12 [東京] FuelPHP & CodeIgniter ユーザの集い #1 2013/09/14 fuelphp コーディングしながらの勉強会 2013/07/30 FuelPHP 勉強会 大阪 vol.4 2013/07/20 [名古屋] FuelPHP入門ハンズオン vol.2 2013/06/30 FuelPHP 勉強会 東京 vol.4 2013/06/22 OSC2013 Nagoya 「FuelPHP BoF」 2013/05/11 FuelPHP 勉強会 東海 vol.4 2013/04/13 [名古屋] FuelPHP入門ハンズオン vol.1 2013/03/23 FuelPHP 勉強会 東京 vol.3 2013/02/17 FuelPHP 勉強会 大須 vol.3 2013/01/19 Nagoya.php 新年会 2013 FuelPHP WikiよりFuelPHPメインっぽいイベントを抜 粋
  46. 46. 電子書籍の紹介 はじめてのフレームワークとしての FuelPHP第2版(2) 環境構築編 / 入門編 / 実践編 達人出版会より プレゼントキャンペーン実施中 詳しくは http://fuelphp1st.com/present/2nd
  47. 47. Fuel = “Growing”
  48. 48. Fuel2.0 2.0プロジェクトが1.x系の更新と平行して進行中 PHP5.4 + Composerベース コア機能の分割 諸コンポーネントの刷新
  49. 49. ご清聴 ありがとうございました。

×