• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
 

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

on

  • 266 views

関西FuelPHP 2014 6/28

関西FuelPHP 2014 6/28

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

Statistics

Views

Total Views
266
Views on SlideShare
161
Embed Views
105

Actions

Likes
0
Downloads
0
Comments
0

4 Embeds 105

http://mkkn.hatenablog.jp 84
http://blog.a-way-out.net 18
http://s.deeeki.com 2
https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via SlideShare as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • まず、FuelとはPHP Framework
  • Eloquentには及ばないなりにもそれなりに使える。
  • バリーデーションとの連携 <br /> 各種フック
  • まず、FuelとはPHP Framework
  • まず、FuelとはPHP Framework
  • まず、FuelとはPHP Framework
  • 基本的なフレームワークは二層or三層 <br />

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

  • フレームワーク4本勝負 #FuelPHP @mkkn_info
  • about me みかかね TW @mkkn_info PHPer @ Osaka マネキンと二人暮らし
  • about me みかかね TW @mkkn_info PHPer @ Osaka マネキンと二人暮らし
  • Fuel = “燃料”
  • CodeIgniter FuelPHP
  • FuelPHP CodeIgniterの流れを組みながら、上手いこといい感じにし たフレームワーク。 PHP 5.3以上対応 : July 31st, 2011 release 名前空間を用いたオートロードシステム クロージャのサポート 静的遅延束縛のサポートによる静的クラスの多用 脱レガシー。新しいPHPの書き方 最新バージョンは1.7。必要な機能はひと通り整ってきた かなぁ?という印象
  • Fuel = “PHP Framework”
  • FuelPHP http://fuelphp.com/
  • Controller 基本的なcontroller/action/param のURL構成 actionメソド内でreturnした文字列を出力 基本的な二階層レイアウトシステムをサポートする Controller_Template 配列をセットするだけで、柔軟にxmやjsonなどの応答を生 成してくれるController_Rest
  • 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から名前付きパラ メータを生成できる。
  • View 基本のパーサはテンプレートを読み込んで変数を割り当 てるだけのシンプルなもの 変数割り当て時の自動エスケープ デフォルトのPHPパーサでも十分使えるレベルに オプションで様々なタイプのパーサに対応 twigやらsmartyやら URL生成クラス、Asset管理クラス、HTMLクラス、Fieldset クラスなどサポートも充実
  • Database クエリビルダを扱うDBクラス 単一テーブルベースのCRUD処理を扱うModel_Crud リレーションを扱えるORMパッケージ DBやテーブルの生成などを扱うDBUtilクラス マイグレーションも一応ある
  • 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(); 名前付きパラメータ もう大量の ? の個数数えたりし なくていい。 変数を参照で割り当てられる。 結果の型は、連想配列、オブ ジェクトから選択できる。
  • 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される。 バリデーション連携も
  • CLI Scaffolding機能 CLI実行用のTask ファイルを設置するだけでCLI実行ファイルが作成可能 CLI実行処理をサポートするCLIクラス モデルクラスをHTTPとCLIで共用可能。 ちょっとしたモデルのテストにも便利 PHPUnitのテストランナー
  • 今回話したいこと
  • Why FuelPHP?
  • FuelPHP http://fuelphp.com/
  • Simple Flexsible Community Driven
  • Fuel = “flexible”
  • 規約より設定 アンチ「設定より規約」 フレームワークが規約やお作法を強制 しない。 フレームワークに縛られない自由な開発スタイル ロジックや、インフラ側がフレームワークに合わせる必要はな い。 必要に応じて必要な分だけの機能を使えばいい 必要に応じて必要な分だけ学べばいい 学習コスト低め。 独自のオートロードシステムで、ほとんどのコア機能は書き換 え可能
  • 独自Autoloader Composer オートローダ Composerのオートローダ FuelPHP オートローダ ファイルパス=完全修飾クラス名の基本的な構造 クラスマップ+コア名前空間 特殊なエイリアス領域 フレームワーク独自のAutoloaderを採用
  • 独自Autoloader クラスエイリアスによる間接的なクラス参照 何をViewクラスとして扱うかをオートローダが制御する。 コアの機能だけでなく、独自定義クラスでもOK Viewクラス FuelCoreViewクラス コアのクラスは全て FuelCore名前空間に 定義されている。
  • 独自Autoloader クラスエイリアスによる間接的なクラス参照 何をViewクラスとして扱うかをオートローダが制御する。 コアの機能だけでなく、独自定義クラスでもOK Viewクラス FuelCoreViewクラス Viewクラスの参照を 切り替えれる。 Viewクラス エイリアス
  • 独自Autoloader クラスエイリアスによる間接的なクラス参照 何をViewクラスとして扱うかをオートローダが制御する。 コアの機能だけでなく、独自定義クラスでもOK Viewクラス FuelCoreViewクラス 切り替え後でもコアの Viewクラスは完全修飾 名で参照可能。 Viewクラス 継承 エイリアス
  • 独自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名前 空間に定義されている。 必要な部分だけを拡張して記述 できる。 クラスマップに登録したら 使用準備完了
  • 独自Autoloader 自作クラスも同様に ProjectnameHogeのような形式で定 義しながら、Hogeクラスとして参照可能。 もちろん後からHogeクラスを作成して拡張可能 気に入らないコア/プラグインの機能はガンガン書き換え られる。 heroku向けにLogクラスを書き換え 独自パーサ機能の実装のためにViewクラスを書き換え 独自Validation機能の実装のためにValidationクラスを書き換え テストの時だけModelの機能を変更
  • Fuel = “simple”
  • Readable PHP5.3以上。互換性のための面倒なコードが存在しない。 機能入れ替え系の機能はオートローダ任せ。複雑なDIコ ンテナのコールは存在しない。 継続的開発の中でもSimpleさを持続する仕組み アプリケーションのモジュール分割
  • 分離 / 再利用の仕組み 継続開発におけるコードの依存関係管理は重大な問題 MVCのまとまりを一つのディレクトリ以下にまとめて、 分離したり共有したりできる。 Module  分割の仕組み。アプリケー ションを機能毎に分割。  特定のURLアクセス時に自 動的に読み込まれる Package  共有の仕組み。アプリケー ション全体に再利用可能な コードを適用  明示的な参照命令を記述し て読み込み
  • 分離 / 再利用の仕組み URLをベースに自動的に読み込まれるModule URLと紐づく依存構成で、アプリケーションの分離層を支 える。 MODULE MODULE MODULE APPLICATION PACKAGES CORE 上から下への参照 は比較的自由 下から上への参照 は制約あり
  • 分離 / 再利用の仕組み PHPファイル、設定ファイル、言語ファイル、 CLIタスクファイルをそれぞれのレイヤーで 機能毎にまとめて配置可能。 MODULE MODULE MODULE APPLICATION PACKAGES CORE MVC+α MVC+α MVC+α
  • 分離 / 再利用の仕組み リクエストに応じたモジュールの自動読み込み Blog APPLICATION PACKAGES CORE http://example.com/blog
  • 分離 / 再利用の仕組み リクエストに応じたモジュールの自動読み込み User APPLICATION PACKAGES CORE http://example.com/user
  • 分離 / 再利用の仕組み リクエストに応じたモジュールの自動読み込み Info APPLICATION PACKAGES CORE http://example.com/info
  • 分離/再利用の仕組み 柔軟なオートローダ クラス参照のスコープがリクエストURLに応じて 「動的に」切り替わる。 カスケードファイルシステム ファイル参照が複数箇所から階層的に行われる。 テンプレート、設定ファイル HMVCアーキテクチャ MVCのそれぞれを独立した要素として再利用可能。
  • 分離 / 再利用の仕組み 複数アプリケーション間で共有可能なパッケージ アプリケーション起動にフックするbootstrapファイルを含 むことが可能でCoreの機能まで上書き可能。 MODULE MODULE MODULE APPLICATION PACKAGES CORE MODULE MODULE MODULE APPLICATION 独自FW層
  • クラスはClassesディレクトリに、 テンプレートはViewsディレクト リに。 classesディレクトリや viewsディレクトリに機能毎のディレ クトリが出来上がっていく。
  • Moduleディレクトリに機能毎の ディレクトリを切って、その中 にクラスファイルやテンプレー トをまとめる。 一つの機能の実装/改修を進めるの に、必要なファイルが全て一つの場 所にまとまっている!!
  • Fuel = “Community Driven”
  • コミュニティ駆動 コミュニティ駆動のオープンソースフレームワーク(MIT ライセンス)。 日本人のユーザコミュニティ https://groups.google.com/forum/#!forum/fuelphp_jp ドキュメントの翻訳活動も活発 ドキュメントはgithubで公開されており、定期的に翻訳 ウィークが開催されています。
  • 日本語ドキュメント http://fuelphp.jp
  • FuelPHP まとめWiki http://wiki.fuelphp1st.com/wiki/
  • FuelPHP日本語ニュース https://www.facebook.com/jp.fuel
  • 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メインっぽいイベントを抜 粋
  • 電子書籍の紹介 はじめてのフレームワークとしての FuelPHP第2版(2) 環境構築編 / 入門編 / 実践編 達人出版会より プレゼントキャンペーン実施中 詳しくは http://fuelphp1st.com/present/2nd
  • Fuel = “Growing”
  • Fuel2.0 2.0プロジェクトが1.x系の更新と平行して進行中 PHP5.4 + Composerベース コア機能の分割 諸コンポーネントの刷新
  • ご清聴 ありがとうございました。