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

Post on 28-May-2015

6.623 Views

Category:

Business

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

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”

FuelPHPhttp://fuelphp.com/

Controller

基本的な controller/action/param の URL 構成

action メソド内で return した文字列を出力

基本的な二階層レイアウトシステムをサポートするController_Template

配列をセットするだけで、柔軟に xm や json などの応答を生成してくれる Controller_Rest

Routing

Route ファイルでルートを記述できる。

Controller に縛られない自由なルーティング

<?php //@config/routes.phpreturn [ “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 = :nameSQL;

$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 ?

FuelPHPhttp://fuelphp.com/

Simple

Flexsible

Community Driven

Fuel = “flexible”

規約より設定アンチ「設定より規約」 フレームワークが規約やお作法を強制しない。

フレームワークに縛られない自由な開発スタイルロジックや、インフラ側がフレームワークに合わせる必要はない。

必要に応じて必要な分だけの機能を使えばいい必要に応じて必要な分だけ学べばいい学習コスト低め。

独自のオートロードシステムで、ほとんどのコア機能は書き換え可能

独自 Autoloader

Composer オートローダ

Composer のオートローダ

FuelPHP オートローダファイルパス = 完全修飾クラス名の基本的な構造

クラスマップ + コア名前空間特殊なエイリアス領域

フレームワーク独自の Autoloader を採用

独自 Autoloader

クラスエイリアスによる間接的なクラス参照何を View クラスとして扱うかをオートローダが制御する。コアの機能だけでなく、独自定義クラスでも OK

View クラス \Fuel\Core\View クラス

コアのクラスは全て\Fuel\Core 名前空間に

定義されている。

独自 Autoloader

クラスエイリアスによる間接的なクラス参照何を View クラスとして扱うかをオートローダが制御する。コアの機能だけでなく、独自定義クラスでも OK

View クラス \Fuel\Core\View クラス

View クラスの参照を切り替えれる。

\View クラス

エイリアス

独自 Autoloader

クラスエイリアスによる間接的なクラス参照何を View クラスとして扱うかをオートローダが制御する。コアの機能だけでなく、独自定義クラスでも OK

View クラス \Fuel\Core\View クラス

切り替え後でもコアのView クラスは完全修

飾名で参照可能。

\View クラス

継承エイリアス

独自 Autoloader

View クラスをカスタマイズする例

# app/classes/view.phpclass View extends \Fuel\Core\View { protected function process_file($file_override=false) { $data = parent::process_file($file_override); return mb_convert_encoding($data,”UTF8”); }}

# app/bootstrap.phpAutoloader::add_classes([ "View" => APPPATH."classes/view.php",]);

コアのクラスは \Fuel\Core 名前空間に定義されている。

必要な部分だけを拡張して記述できる。

クラスマップに登録したら使用準備完了

独自 Autoloader

自作クラスも同様に \Projectname\Hoge のような形式で定義しながら、 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 まとめ Wikihttp://wiki.fuelphp1st.com/wiki/

FuelPHP日本語ニュースhttps://www.facebook.com/jp.fuel

Meet-up in 2013 2013/12/07 [東京 ] FuelPHP & CodeIgniter ユーザの集い #22013/10/26 FuelPHP 勉強会 東海 vol.52013/10/12 [東京 ] FuelPHP & CodeIgniter ユーザの集い #12013/09/14 fuelphp コーディングしながらの勉強会2013/07/30 FuelPHP 勉強会 大阪 vol.4 2013/07/20 [ 名古屋 ] FuelPHP入門ハンズオン vol.22013/06/30 FuelPHP 勉強会 東京 vol.42013/06/22 OSC2013 Nagoya 「 FuelPHP BoF 」2013/05/11 FuelPHP 勉強会 東海 vol.4 2013/04/13 [ 名古屋 ] FuelPHP入門ハンズオン vol.12013/03/23 FuelPHP 勉強会 東京 vol.32013/02/17 FuelPHP 勉強会 大須 vol.32013/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 ベース

コア機能の分割

諸コンポーネントの刷新

ご清聴 ありがとうございました。

top related