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

Mika Kane
フレームワーク4本勝負
#FuelPHP
@mkkn_info
about me
みかかね
TW @mkkn_info
PHPer @ Osaka
マネキンと二人暮らし
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
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ベース
コア機能の分割
諸コンポーネントの刷新
ご清聴 ありがとうございました。
1 of 50

More Related Content

What's hot(20)

FuelPHPをさわってみてFuelPHPをさわってみて
FuelPHPをさわってみて
Sotaro Omura17.4K views
NetBeansではじめる FuelPHPNetBeansではじめる FuelPHP
NetBeansではじめる FuelPHP
Junichi Yamamoto13.3K views
FuelPHP Osu Nagoya vol.1FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Fumito Mizuno3K views
Fuelphp1.8を始めたいFuelphp1.8を始めたい
Fuelphp1.8を始めたい
運営 sollastudio882 views
Osc2014Osc2014
Osc2014
Soudai Sone2.7K views
Fuel php osc tokyo2012Fuel php osc tokyo2012
Fuel php osc tokyo2012
Fumito Mizuno3K views
Cakephp勉強会@tokyo #4Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
ichikaway1.1K views
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014
Rui Hirokawa21.3K views
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
Sho A13.1K views
Ansible入門...?Ansible入門...?
Ansible入門...?
shirou wakayama9.5K views
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUp
Kenichi Mukai2.4K views
SPL fukuokaphp_1SPL fukuokaphp_1
SPL fukuokaphp_1
ichikaway1.3K views
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
do_aki26.4K views
php-src の歩き方php-src の歩き方
php-src の歩き方
do_aki2.4K views

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

FuelPHP活用事例FuelPHP活用事例
FuelPHP活用事例Yusuke Naka
3.3K views42 slides
PHP & QueuePHP & Queue
PHP & Queuesasezaki
5.7K views28 slides

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

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

Editor's Notes

  1. まず、FuelとはPHP Framework
  2. Eloquentには及ばないなりにもそれなりに使える。
  3. バリーデーションとの連携 各種フック
  4. まず、FuelとはPHP Framework
  5. まず、FuelとはPHP Framework
  6. まず、FuelとはPHP Framework
  7. 基本的なフレームワークは二層or三層