10分でわかるFuelPHP @ 2011/12
Upcoming SlideShare
Loading in...5
×
 

10分でわかるFuelPHP @ 2011/12

on

  • 17,414 views

PHP 5.3用フレームワーク「FuelPHP」の紹介プレゼン資料

PHP 5.3用フレームワーク「FuelPHP」の紹介プレゼン資料

Statistics

Views

Total Views
17,414
Views on SlideShare
5,623
Embed Views
11,791

Actions

Likes
7
Downloads
19
Comments
0

11 Embeds 11,791

http://d.hatena.ne.jp 11676
http://localhost 80
http://webcache.googleusercontent.com 25
http://translate.googleusercontent.com 2
https://www.google.co.jp 2
http://s.deeeki.com 1
http://192.168.2.100 1
http://cc.bingj.com 1
https://twitter.com 1
http://clipboard.com 1
https://cybozulive.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    10分でわかるFuelPHP @ 2011/12 10分でわかるFuelPHP @ 2011/12 Presentation Transcript

    • 10分でわかるFuelPHPA simple, flexible, community driven PHP5.3 framework. 2011/12/25 Kenji Suzuki
    • FuelPHPとは? コミュニティで開発されている オープンソースのPHPフレームワーク 2011/7/30、初の公式リリース1.0.0 公式サイト http://fuelphp.com/
    • FuelPHPとは? MITライセンス PHP 5.3以降 いろいろなフレームワークのいいとこ取り ➔ CodeIgniter ➔ Kohana ➔ Symfony ➔ Rails
    • FuelPHPとは? 2010/後半 開発開始 2011/01/08 1.0.0-BETA1リリース 2011/07/30 1.0.0公式リリース 2011/10/25 1.1.0-RC1リリース 2011/12/13 1.1.0公式リリース(←今ここ)
    • FuelPHPとは? 世界第x位のPHPフレームワーク Googleトレンドによる検索数
    • FuelPHPとは? 世界第x位のPHPフレームワーク このへん Googleトレンドによる検索数
    • FuelPHPの利用例Under Construction http://
    • フレームワークとは? Webアプリケーションフレームワークとは? ➔ Webアプリケーションを作成する 「枠組み」 ➔ 機能としては • 過去のプログラミングの経験則の 規約化する • 頻繁に使う機能を抽象化する (モジュール化、ライブラリ化) ➔ Webアプリケーション全体を 見通しよく開発できるようにするもの
    • FuelPHPに向いている人 CodeIgniterを知っている人 ➔ 開発者がCodeIgniter系の人なので、 かなり似てます Kohanaを知っている人 ➔ Kohanaも参考に作られていますので、 さらに似てます(Kohana+α=FuelPHP) Configuration over Convention ➔ 規約が嫌いな人 ➔ CodeIgniter系のフレームワークですので、強制 的な規約は最小限になっています
    • FuelPHPに向いている人 軽量・高速のフレームワークが好きな人 フレームワークをいろいろ拡張したい人 ➔ CodeIgniterのように拡張できます 見やすいドキュメントが好きな人 ➔ CodeIgniterのユーザガイドのように 見やすいです ➔ (ただし英語、しかも完全なドキュメントではあり ません) コマンドラインが好きな人(嫌いでも可)
    • FuelPHPに向いている人 他のフレームワークに挫折した人 ➔ 規約が多すぎて覚えきれない ➔ デカすぎてソース読めないから嫌 ➔ ただし、OOPになれてないと難しいかも ➔ ぶっちゃけ、クラスって何?という人は無理
    • FuelPHPを使うメリット 高速な動作 ➔ 軽量で動作が高速 最新のPHPフレームワーク ➔ PHP5.3以降なので、5.3の機能をフルに使 える コードや仕様がクリーン ➔ PHP5.3でゼロから書かれたフレームワーク なので、完全にOOPであり、クリーンなコー ド ➔ PHP4を引きずっていたりしない
    • FuelPHPを使うメリット バランス ➔ CodeIgniterよりは広い範囲をカバーして いる ➔ ビューのレイアウト機能、モデルのCRUD機 能、認証ライブラリ、ORMなど コマンドラインによるパワフルな機能 ➔ ScaffoldingやMigration
    • MVCモデルとは? Controller(コントローラ)は、 入力データに従って適切なデータを呼び出し ModelやViewの連携など、アプリケーション 全体の制御を行う Model(モデル)は、 データベースへのアクセスやデータの修正/ 加工などのデータの管理を行う View(ビュー)は、 処理結果の表示など、画面表示を担当する
    • MVCモデル Controller・リクエスト 流れの制御など 呼び出し・データ入力 結果 結果 Model 結果 呼び出し データの管理 View 画面表示
    • FuelPHPのフォルダ構成 公式ドキュメント アプリケーションを配置 FuelPHP本体 FuelPHPのパッケージ oilコマンド Web公開領域 フロントコントローラ
    • FuelPHPのフォルダ構成 アプリケーションを配置 ブートストラップ キャッシュフォルダ クラスを配置 コントローラを配置 モデルを配置 ビューモデルを配置 設定ファイルを配置 言語ファイルを配置 ログフォルダ マイグレーションファイルを配置 モジュールを配置 タスクを配置 tmpフォルダ サードパーティライブラリを配置 ビューを配置
    • FuelPHPのURLの構造 URLの構造http://example.jp/コントローラ/メソッド/引数 http://example.jp/shop/search/123 class Controller_Shop extends Controller { ... function action_search($id) { ... } }
    • Controller Controllerクラスを継承 クラス名には先頭に「Controller_」を付ける 「Controller_」の後の単語の先頭は大文字 アクションメソッド名には先頭に「action_」を 付ける ファイル名やフォルダ名はすべて小文字 (FuelPHPでの共通の規約) クラス名の中の「_」はフォルダ区切りを意味 する
    • Controller action_index()メソッドはデフォルトメソッド ➔ http://example.jp/time/ fuel/app/classes/controller/time.php class Controller_Time extends Controller { public function action_index() { // タイトル $data[title] = 時刻メッセージ; // 現在の時刻 $data[now_time] = date("H時i分s秒"); // テンプレートに変数を代入 $this­>response­>body = View::forge( time_view, $data ); } }
    • Controller クラス名とファイル名の対応 class Controller_Time_Message ➔ controller/time/message.php ➔ http://example.jp/time/message class Controller_Time ➔ controller/time.php ➔ function action_message() ➔ http://example.jp/time/message 両方あったら? ➔ class Controller_Timeが優先
    • Controller URLとクラス名の対応 http://example.jp/time_message ➔ class Controller_Time_Message ➔ controller/time_message.php ➔ クラス名の「_」はフォルダ区切りになるので これは使えない → 404
    • Controller URLとクラス名の対応 http://example.jp/time/time_message ➔ class Controller_Time ➔ controller/time.php ➔ function action_time_message() ➔ メソッド名の「_」はOK
    • Controller 拡張したクラス Template Controller ➔ ビューのレイアウト機能を追加したもの ➔ Controller_Templateクラスを継承する Rest Controller ➔ RESTfulなコントローラ ➔ Controller_Restクラスを継承する
    • View  標準のビューファイルは、 単なるPHPファイルfuel/app/view/time_view.php<html><head><title><?php echo $title; ?></title></head><body><?php echo $now_time; ?></body></html> Controllerのコード $data[title] = 時刻メッセージ; $data[now_time] = date("H時i分s秒"); $this­>response­>body = View::forge( time_view, $data);
    • View (オプション)Parserモジュール 以下のテンプレートを標準でサポート ➔ SimpleTags ➔ Mustache ➔ Twig ➔ Jade ➔ Haml ➔ Smarty packages/parser/README.md参照
    • Model オプション(使わないことも可能) ただのPHPのクラス データベース・アクセスの方法 1. DB::query() 2. Query Builder 3. ORMパッケージ
    • DB::query()// SQLクエリの実行$result = DB::query(SELECT * FROM `posts`)­>execute();// 表示処理foreach ($result­>as_array() as $row){ echo $row[id]      .  ; echo $row[title]   .  ; echo $row[summary] . <br />;}echo レコード数:  . count($result);
    • Query Builder// SQLクエリの実行$result = DB::select(*)­>from(posts)­>execute();// 表示処理foreach ($result­>as_array() as $row){ echo $row[id]      .  ; echo $row[title]   .  ; echo $row[summary] . <br />;}echo レコード数:  . count($result);
    • ORM1. config.phpでの設定2. Modelの作成3. クエリの実行
    • Model Modelクラスを継承 fuel/app/classes/model/post.php class Model_Post extends Model { function find_all() { ... } } または namespace Model; class Post extends Model { function find_all() { ... } }
    • Modelの使い方 その1 メソッドを呼び出す $data[posts] = Model_Post::find_all(); Modelのコード class Model_Post extends Model { function find_all() { ... } }
    • Modelの使い方 その2 メソッドを呼び出す $data[posts] = ModelPost::find_all(); Modelのコード namespace Model; class Post extends Model { function find_all() { ... } }
    • Model 拡張したクラス Model_Crudクラス ➔ CRUD機能を追加したもの ➔ Model_Crudクラスを継承する
    • ORM1. config.phpでの設定fuel/app/config/config.php always_load  => array( packages  => array( orm, //auth, ), ),
    • ORM 2. Modelの作成fuel/app/classes/model/post.php<?phpnamespace Model;class Post extends OrmModel{ protected static $_properties = array( id, title, summary, body,  created_at, updated_at, ); protected static $_observers = array( OrmObserver_CreatedAt =>  array(events=>array(before_insert)), OrmObserver_UpdatedAt =>  array(events=>array(before_save)), );}※ $_propertiesでカラム名を定義する
    • ORM 3. クエリの実行// SQLクエリの実行$result = ModelPost::find(all);// 表示処理foreach ($result as $row){ echo $row[id]      .  ; echo $row[title]   .  ; echo $row[summary] . <br />;}echo レコード数:  . count($result);
    • Coreクラス  どんなものがあるか?Agent Database Fuel Mongo_Db StrArr Date Html Num UploadAsset Debug Image Package UriAutoloader Event Inflector Pagination ValidationCache Fieldset Input Redis ViewCli File Lang RequestConfig Form Log ResponseCookie Format Migrate SecurityCrypt Ftp Model_Crud Session
    • クラスの使い方 静的な呼び出し echo Form::open(uri/to/form); 出力されるHTML <form action="http://localhost/blog/uri/to/form"  accept­charset="utf­8" method="post">
    • クラスの使い方 インスタンス化 $val = Validation::forge(); $val­>add(title, Title) ­>add_rule(required); if ($val­>run()) { ... } else { ... }
    • FuelPHPのセキュリティ フールプルーフではない! ➔ フールプルーフとは? 「よくわかっていない人が扱っても安全」 -- http://e-words.jp/ ➔ ○○を使っていれば安全 ただし、FuelPHPには、 ➔ デフォルトのセキュリティ機能 ➔ 手動で利用するセキュリティ機能 • フレームワークを使わない場合より、 かなり安全
    • FuelPHPのセキュリティ デフォルトのセキュリティ機能 ➔ Output encoding • viewへの変数はHTMLエスケープ • config.phpのsecurity.output_filter • デフォルトはSecurity::htmlentities ➔ URL encoding • URLもHTMLエスケープ • config.phpのsecurity.uri_filter • デフォルトはSecurity::htmlentities ➔ SQL injection対策 • Query BuilderやORMでは自動エスケープ
    • FuelPHPのセキュリティ セキュリティ機能 ➔ Input filtering • config.phpのsecurity.input_filter ➔ CSRF保護 • 自動ではないが支援機能あり ➔ XSS filtering • HTMLawedというライブラリが付属している
    • FuelPHPの高い拡張性 Coreクラス ➔ 継承・置き換え可能 • コアクラスを置き換えずに拡張する • コアクラスを拡張し、置き換える • パッケージからコアを拡張する
    • 公式ドキュメントの翻訳 https://github.com/NEKOGET/FuelPHP_docs_jp http://press.nekoget.com/fuelphp_doc/ 翻訳を手伝ってくれる人を募集中
    • FuelPHPについての日本語情報 FuelPHP まとめ Wiki http://fuelphp.phpfogapp.com/wiki/ FuelPHP Advent Calendar 2011 http://atnd.org/events/22380
    • まとめ FuelPHPは、シンプルでフレキシブルなコミュ ニティにより開発されているPHP5.3のフレー ムワークです。 公式ドキュメントの翻訳を手伝ってくれる人を 募集しています。