Upgrade to Pro — share decks privately, control downloads, hide ads and more …

10分でわかるFuelPHP

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for kenjis kenjis
December 25, 2011

 10分でわかるFuelPHP

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

Avatar for kenjis

kenjis

December 25, 2011
Tweet

More Decks by kenjis

Other Decks in Programming

Transcript

  1. 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公式リリース(←今ここ)
  2. フレームワークとは?  Webアプリケーションフレームワークとは? ➔Webアプリケーションを作成する 「枠組み」 ➔機能としては • 過去のプログラミングの経験則の 規約化する •

    頻繁に使う機能を抽象化する (モジュール化、ライブラリ化) ➔Webアプリケーション全体を 見通しよく開発できるようにするもの
  3. FuelPHPに向いている人  CodeIgniterを知っている人 ➔ 開発者がCodeIgniter系の人なので、 かなり似てます  Kohanaを知っている人 ➔ Kohanaも参考に作られていますので、

    さらに似てます(Kohana+α=FuelPHP)  Configuration over Convention ➔ 規約が嫌いな人 ➔ CodeIgniter系のフレームワークですので、強制 的な規約は最小限になっています
  4. FuelPHPに向いている人  軽量・高速のフレームワークが好きな人  フレームワークをいろいろ拡張したい人 ➔ CodeIgniterのように拡張できます  見やすいドキュメントが好きな人 ➔

    CodeIgniterのユーザガイドのように 見やすいです ➔ (ただし英語、しかも完全なドキュメントではあり ません)  コマンドラインが好きな人(嫌いでも可)
  5. FuelPHPを使うメリット  高速な動作 ➔軽量で動作が高速  最新のPHPフレームワーク ➔PHP5.3以降なので、5.3の機能をフルに使 える  コードや仕様がクリーン

    ➔PHP5.3でゼロから書かれたフレームワーク なので、完全にOOPであり、クリーンなコー ド ➔PHP4を引きずっていたりしない
  6. FuelPHPのフォルダ構成 アプリケーションを配置 コントローラを配置 モデルを配置 ビューモデルを配置 ビューを配置 クラスを配置 キャッシュフォルダ ブートストラップ 設定ファイルを配置

    言語ファイルを配置 ログフォルダ マイグレーションファイルを配置 モジュールを配置 タスクを配置 サードパーティライブラリを配置 tmpフォルダ
  7. Controller  Controllerクラスを継承  クラス名には先頭に「Controller_」を付ける  「Controller_」の後の単語の先頭は大文字  アクションメソッド名には先頭に「action_」を 付ける

     ファイル名やフォルダ名はすべて小文字 (FuelPHPでの共通の規約)  クラス名の中の「_」はフォルダ区切りを意味 する
  8. Controller 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 ); } } fuel/app/classes/controller/time.php  action_index()メソッドはデフォルトメソッド ➔http://example.jp/time/
  9. 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が優先
  10. View <html> <head> <title><?php echo $title; ?></title> </head> <body> <?php

    echo $now_time; ?> </body> </html> fuel/app/view/time_view.php  標準のビューファイルは、 単なるPHPファイル $data['title'] = '時刻メッセージ'; $data['now_time'] = date("H時i分s秒"); $this­>response­>body = View::forge( 'time_view', $data); Controllerのコード
  11. 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);
  12. 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);
  13. Model class Model_Post extends Model { function find_all() { ...

    } }  Modelクラスを継承 fuel/app/classes/model/post.php namespace Model; class Post extends \Model { function find_all() { ... } } または
  14. ORM 2. Modelの作成 <?php namespace Model; class Post extends \Orm\Model

    { protected static $_properties = array( 'id', 'title', 'summary', 'body', 'created_at', 'updated_at', ); protected static $_observers = array( 'Orm\Observer_CreatedAt' => array('events'=>array('before_insert')), 'Orm\Observer_UpdatedAt' => array('events'=>array('before_save')), ); } fuel/app/classes/model/post.php ※ $_propertiesでカラム名を定義する
  15. ORM 3. クエリの実行 // SQLクエリの実行 $result = \Model\Post::find('all'); // 表示処理

    foreach ($result as $row) { echo $row['id'] . ' '; echo $row['title'] . ' '; echo $row['summary'] . '<br />'; } echo 'レコード数: ' . count($result);
  16. Coreクラス  どんなものがあるか? Agent Arr Asset Autoloader Cache Cli Config

    Cookie Crypt Database Date Debug Event Fieldset File Form Format Ftp Fuel Html Image Inflector Input Lang Log Migrate Model_Crud Mongo_Db Num Package Pagination Redis Request Response Security Session Str Upload Uri Validation View
  17. FuelPHPのセキュリティ  フールプルーフではない! ➔フールプルーフとは? 「よくわかっていない人が扱っても安全」 -- http://e-words.jp/ ➔◦◦を使っていれば安全  ただし、FuelPHPには、

    ➔デフォルトのセキュリティ機能 ➔手動で利用するセキュリティ機能 • フレームワークを使わない場合より、 かなり安全
  18. 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では自動エスケープ
  19. FuelPHPのセキュリティ  セキュリティ機能 ➔ Input filtering • config.phpのsecurity.input_filter ➔ CSRF保護

    • 自動ではないが支援機能あり ➔ XSS filtering • HTMLawedというライブラリが付属している