10分でわかるFuelPHPA simple, flexible, community drivenPHP 5.3 framework.2013/06/22 @ OSC2013 Nagoyakenjis
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リリース 2011/12/13 1.1リリース 2012/06/03 1.2リリース 2012/09/0...
FuelPHPとは? 日本での4大PHPフレームワークの1つhttp://c4sa.nifty.com/
FuelPHPとは? 日本での4大PHPフレームワークの1つhttp://www.paperboy.co.jp/news/201306121300
FuelPHPとは? はてなブックマーク数(3ユーザ以上)➔CakePHP    4,926➔Symfony    1,961➔Zend Framework 829➔FuelPHP      632➔CodeIgniter    495   ...
FuelPHPの利用例http://sp.demae-can.com/
FuelPHPの利用例http://animita.tv/
FuelPHPの利用例http://bushidotickets.com/
フレームワークとは? Webアプリケーションフレームワークとは?➔Webアプリケーションを作成する「枠組み」➔機能としては• 過去のプログラミングの経験則の規約化• 頻繁に使う機能を抽象化(モジュール化、ライブラリ化)➔Webアプリケーション...
FuelPHPに向いている人 CodeIgniterを知っている人➔開発者がCodeIgniter系の人なので、かなり似ている Kohanaを知っている人➔Kohanaも参考に作られていますので、さらに似ている(Kohana+α=FuelP...
FuelPHPに向いている人 軽量高速なフレームワークが好きな人 フレームワークをいろいろ拡張したい人➔CodeIgniterのように拡張できます 見やすいドキュメントが好きな人➔CodeIgniterのユーザガイドのように見やすいです(...
FuelPHPに向いている人 他のフレームワークに挫折した人➔ドキュメントがわかりにくい➔規約が多すぎて覚えきれない➔デカすぎてソースが読めない➔難しすぎる
FuelPHPを使うメリット 高速な動作➔軽量で動作が高速 最新のPHPフレームワーク➔PHP 5.3以降なので、5.3の機能をフルに使える コードや仕様がクリーン➔PHP 5.3でゼロから書かれたフレームワークなので、完全にOOPであり...
FuelPHPを使うメリット バランス➔CodeIgniterよりは広い範囲をカバーしている(多機能)➔ビューのレイアウト機能、モデルのCRUD機能、HMVC、認証インターフェイス、ORM、PHPUnitでのテストなど コマンドラインによる...
MVCモデルとは? Controller(コントローラ)は、入力データに従って適切なデータを呼び出しModelやViewの連携など、アプリケーション全体の制御を行う Model(モデル)は、データベースへのアクセスやデータの修正/加工などの...
MVCモデルController流れの制御などView画面表示Modelデータの管理・リクエスト・データ入力結果結果結果呼び出し呼び出し
FuelPHPのフォルダ構成公式ドキュメントアプリケーションを配置FuelPHP本体FuelPHPのパッケージoilコマンドWeb公開領域フロントコントローラcss、img、jsComposerのパッケージ
FuelPHPのフォルダ構成アプリケーションを配置コントローラを配置モデルを配置ビューモデルを配置ビューを配置クラスを配置キャッシュフォルダブートストラップ設定ファイルを配置言語ファイルを配置ログフォルダDBマイグレーションファイルを配置モジュ...
FuelPHPのURLの構造 URLの構造http://example.jp/コントローラ/メソッド/引数class Controller_Shop extends Controller{...function action_search($...
Controller Controllerクラスを継承 クラス名には先頭に「Controller_」を付ける 「Controller_」の後の単語の先頭は大文字 アクションメソッド名には先頭に「action_」を付ける ファイル名やフ...
Controllerclass Controller_Time extends Controller{public function action_index(){// タイトル$data[title] = 時刻メッセージ;// 現在の時刻$d...
Controllerクラス名とファイル名の対応 class Controller_Time_Message➔controller/time/message.php➔http://example.jp/time/message class C...
ControllerURLとクラス名の対応 http://example.jp/time_message ?➔class Controller_Time_Message ?➔controller/time_message.php ?➔クラス名...
ControllerURLとクラス名の対応 http://example.jp/time/time_message➔class Controller_Time➔controller/time.php➔function action_time_...
Controller拡張したクラス Template Controller➔ビューのレイアウト機能を追加したもの➔Controller_Templateクラスを継承する Rest Controller➔RESTfulなコントローラ➔Web ...
View<html><head><title><?php echo $title; ?></title></head><body><?php echo $now_time; ?></body></html>fuel/app/view/time_...
View (オプション)Parserモジュール 以下のテンプレートを標準でサポート➔Smarty / Twig / Dwoo / PHPTAL /Mustache / Jade / Haml /Markdown packages/pars...
Model オプション(使わないことも可能) ただのPHPのクラス データベース・アクセスの方法➔DB::query()➔Query Builder➔Model_Crud➔ORMパッケージ
DB::query()// SQLクエリの実行$result = DB::query(SELECT * FROM `posts`)­>execute();// 表示処理foreach ($result­>as_array() as $row){...
Query Builder// SQLクエリの実行$result = DB::select(*)­>from(posts)­>execute();// 表示処理foreach ($result­>as_array() as $row){echo...
Modelclass Model_Post extends Model{function find_all(){...}} Modelクラスを継承fuel/app/classes/model/post.php
Modelの使い方 メソッドを呼び出す$data[posts] = Model_Post::find_all();class Model_Post extends Model{function find_all(){...}}Modelのコード
Model拡張したクラス Model_Crudクラス➔CRUD用メソッドを追加したもの➔Model_Crudクラスを継承する
ORMの使い方1. config.phpでの設定2. Modelの作成3. クエリの実行
ORMの使い方1. config.phpでの設定always_load  => array(packages  => array(orm,//auth,),),fuel/app/config/config.php
ORMの使い方2. Modelの作成<?phpclass Model_Post extends OrmModel{protected static $_properties = array(id, title, summary, body, c...
ORMの使い方3. クエリの実行// SQLクエリの実行$result = Model_Post::find(all);// 表示処理foreach ($result as $row){echo $row[id]      .  ;echo $...
ORM Model拡張したクラス OrmModel_Soft➔論理削除 OrmModel_Temporal➔データのバージョン管理 OrmModel_Nestedset➔階層構造のデータ その他➔ORM ModelでEAV(Entity...
Coreクラス どんなものがあるか?AgentArrAssetAutoloaderCacheCliConfigCookieCryptDatabaseDateDebugEventFieldsetFileFinderFormFormatFtpFu...
クラスの使い方 静的な呼び出し<form action="http://localhost/blog/uri/to/form" accept­charset="utf­8" method="post">echo Form::open(uri/...
クラスの使い方 インスタンス化$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::htm...
FuelPHPのセキュリティ セキュリティ機能➔Input filtering• config.phpのsecurity.input_filter➔CSRF保護• 自動ではないが支援機能あり➔XSS filtering• HTMLawedとい...
FuelPHPの高い拡張性 Coreクラス➔継承・置き換え可能• コアクラスを置き換えずに拡張する• コアクラスを拡張し、置き換える• パッケージからコアを拡張する
公式ドキュメントの翻訳 https://github.com/NEKOGET/FuelPHP_docs_jp http://fuelphp.jp/ 翻訳を手伝ってくれる人を募集中
FuelPHPについての日本語情報 FuelPHP まとめ Wikihttp://wiki.fuelphp1st.com/wiki/
FuelPHPについての日本語コミュニティ fuelphp.jp Googleグループhttps://groups.google.com/group/fuelphp_jp?hl=ja twitter 「fuelphp」で検索https://...
FuelPHPについての書籍 『FuelPHP Advent Calendar 2011』技術評論社 『FuelPHP入門』ソーテック社 『はじめてのフレームワークとしてのFuelPHP』達人出版会 『FuelPHP Advent Ca...
FuelPHPについての書籍無料 無料
まとめ FuelPHPは、シンプルでフレキシブルなコミュニティにより開発されているPHP5.3のフレームワークです。 日本のユーザも増え、採用事例も増えてきました。 公式ドキュメントの翻訳を手伝ってくれる人を募集しています。
このファイルのライセンス This work is licensed under theCreative Commons 表示 - 継承 3.0 非移植 License. To view a copy of thislicense, visi...
Upcoming SlideShare
Loading in...5
×

10分でわかるFuelPHP @ OSC2013 Nagoya

8,561

Published on

OSC2013 Nagoya での FuelPHP BoF での FuelPHP の紹介資料

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,561
On Slideshare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
4
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

Transcript of "10分でわかるFuelPHP @ OSC2013 Nagoya"

  1. 1. 10分でわかるFuelPHPA simple, flexible, community drivenPHP 5.3 framework.2013/06/22 @ OSC2013 Nagoyakenjis
  2. 2. FuelPHPとは? コミュニティで開発されているオープンソースのPHPフレームワーク 2011/7/30、初の公式リリース1.0.0 公式サイト http://fuelphp.com/
  3. 3. FuelPHPとは? MITライセンス PHP 5.3以降 いろいろなフレームワークのいいとこ取り➔CodeIgniter➔Kohana➔Symfony➔Rails
  4. 4. FuelPHPとは? 2010/末 開発開始 2011/01/08 1.0.0-BETA1リリース 2011/07/30 1.0リリース 2011/12/13 1.1リリース 2012/06/03 1.2リリース 2012/09/09 1.3リリース 2012/11/09 1.4リリース 2013/01/20 1.5リリース 2013/05/03 1.6リリース 2013/06/09 1.6.1リリース (←今ここ)
  5. 5. FuelPHPとは? 日本での4大PHPフレームワークの1つhttp://c4sa.nifty.com/
  6. 6. FuelPHPとは? 日本での4大PHPフレームワークの1つhttp://www.paperboy.co.jp/news/201306121300
  7. 7. FuelPHPとは? はてなブックマーク数(3ユーザ以上)➔CakePHP    4,926➔Symfony    1,961➔Zend Framework 829➔FuelPHP      632➔CodeIgniter    495       (2013/6/21調べ)
  8. 8. FuelPHPの利用例http://sp.demae-can.com/
  9. 9. FuelPHPの利用例http://animita.tv/
  10. 10. FuelPHPの利用例http://bushidotickets.com/
  11. 11. フレームワークとは? Webアプリケーションフレームワークとは?➔Webアプリケーションを作成する「枠組み」➔機能としては• 過去のプログラミングの経験則の規約化• 頻繁に使う機能を抽象化(モジュール化、ライブラリ化)➔Webアプリケーション全体を見通しよく開発できるようにするもの
  12. 12. FuelPHPに向いている人 CodeIgniterを知っている人➔開発者がCodeIgniter系の人なので、かなり似ている Kohanaを知っている人➔Kohanaも参考に作られていますので、さらに似ている(Kohana+α=FuelPHP) Configuration over Convention➔規約が嫌いな人➔CodeIgniter系のフレームワークなので、強制的な規約は最小限になっている
  13. 13. FuelPHPに向いている人 軽量高速なフレームワークが好きな人 フレームワークをいろいろ拡張したい人➔CodeIgniterのように拡張できます 見やすいドキュメントが好きな人➔CodeIgniterのユーザガイドのように見やすいです(ただし、翻訳率は現在64%程度) コマンドラインが好きな人(嫌いでも可)
  14. 14. FuelPHPに向いている人 他のフレームワークに挫折した人➔ドキュメントがわかりにくい➔規約が多すぎて覚えきれない➔デカすぎてソースが読めない➔難しすぎる
  15. 15. FuelPHPを使うメリット 高速な動作➔軽量で動作が高速 最新のPHPフレームワーク➔PHP 5.3以降なので、5.3の機能をフルに使える コードや仕様がクリーン➔PHP 5.3でゼロから書かれたフレームワークなので、完全にOOPであり、クリーンなコード➔PHP4を引きずっていたりしない
  16. 16. FuelPHPを使うメリット バランス➔CodeIgniterよりは広い範囲をカバーしている(多機能)➔ビューのレイアウト機能、モデルのCRUD機能、HMVC、認証インターフェイス、ORM、PHPUnitでのテストなど コマンドラインによるパワフルな機能➔ScaffoldingやMigration
  17. 17. MVCモデルとは? Controller(コントローラ)は、入力データに従って適切なデータを呼び出しModelやViewの連携など、アプリケーション全体の制御を行う Model(モデル)は、データベースへのアクセスやデータの修正/加工などのデータの管理を行う View(ビュー)は、処理結果の表示など、画面表示を担当する
  18. 18. MVCモデルController流れの制御などView画面表示Modelデータの管理・リクエスト・データ入力結果結果結果呼び出し呼び出し
  19. 19. FuelPHPのフォルダ構成公式ドキュメントアプリケーションを配置FuelPHP本体FuelPHPのパッケージoilコマンドWeb公開領域フロントコントローラcss、img、jsComposerのパッケージ
  20. 20. FuelPHPのフォルダ構成アプリケーションを配置コントローラを配置モデルを配置ビューモデルを配置ビューを配置クラスを配置キャッシュフォルダブートストラップ設定ファイルを配置言語ファイルを配置ログフォルダDBマイグレーションファイルを配置モジュール(HMVC)を配置タスク(CLIから起動するクラス)を配置tmpフォルダテスト(PHPUnit)を配置
  21. 21. FuelPHPのURLの構造 URLの構造http://example.jp/コントローラ/メソッド/引数class Controller_Shop extends Controller{...function action_search($id){...}}http://example.jp/shop/search/123
  22. 22. Controller Controllerクラスを継承 クラス名には先頭に「Controller_」を付ける 「Controller_」の後の単語の先頭は大文字 アクションメソッド名には先頭に「action_」を付ける ファイル名やフォルダ名はすべて小文字(FuelPHPでの共通の規約) クラス名の中の「_」はフォルダ区切りになる
  23. 23. Controllerclass Controller_Time extends Controller{public function action_index(){// タイトル$data[title] = 時刻メッセージ;// 現在の時刻$data[now_time] = date("H時i分s秒");// テンプレートに変数を代入return View::forge(time_view, $data);}}fuel/app/classes/controller/time.php action_index()メソッドはデフォルトメソッド➔http://example.jp/time/
  24. 24. 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
  25. 25. ControllerURLとクラス名の対応 http://example.jp/time_message ?➔class Controller_Time_Message ?➔controller/time_message.php ?➔クラス名の「_」はフォルダ区切りになるのでこれは使えない➔404 Not Found 規約に外れるものはルーティング設定が必要
  26. 26. ControllerURLとクラス名の対応 http://example.jp/time/time_message➔class Controller_Time➔controller/time.php➔function action_time_message()➔メソッド名の「_」はOK
  27. 27. Controller拡張したクラス Template Controller➔ビューのレイアウト機能を追加したもの➔Controller_Templateクラスを継承する Rest Controller➔RESTfulなコントローラ➔Web APIがすぐに作成できる➔Controller_Restクラスを継承する Hybrid Controller➔Rest Controller + Template➔Controller_Hybridクラスを継承する
  28. 28. 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秒");return View::forge(time_view, $data);Controllerのコード
  29. 29. View (オプション)Parserモジュール 以下のテンプレートを標準でサポート➔Smarty / Twig / Dwoo / PHPTAL /Mustache / Jade / Haml /Markdown packages/parser/README.md参照
  30. 30. Model オプション(使わないことも可能) ただのPHPのクラス データベース・アクセスの方法➔DB::query()➔Query Builder➔Model_Crud➔ORMパッケージ
  31. 31. 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);
  32. 32. 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);
  33. 33. Modelclass Model_Post extends Model{function find_all(){...}} Modelクラスを継承fuel/app/classes/model/post.php
  34. 34. Modelの使い方 メソッドを呼び出す$data[posts] = Model_Post::find_all();class Model_Post extends Model{function find_all(){...}}Modelのコード
  35. 35. Model拡張したクラス Model_Crudクラス➔CRUD用メソッドを追加したもの➔Model_Crudクラスを継承する
  36. 36. ORMの使い方1. config.phpでの設定2. Modelの作成3. クエリの実行
  37. 37. ORMの使い方1. config.phpでの設定always_load  => array(packages  => array(orm,//auth,),),fuel/app/config/config.php
  38. 38. ORMの使い方2. Modelの作成<?phpclass Model_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)),);}fuel/app/classes/model/post.php※ $_propertiesでカラム名を定義する
  39. 39. 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);
  40. 40. ORM Model拡張したクラス OrmModel_Soft➔論理削除 OrmModel_Temporal➔データのバージョン管理 OrmModel_Nestedset➔階層構造のデータ その他➔ORM ModelでEAV(Entity-Attribute-Value)モデルを扱う機能
  41. 41. Coreクラス どんなものがあるか?AgentArrAssetAutoloaderCacheCliConfigCookieCryptDatabaseDateDebugEventFieldsetFileFinderFormFormatFtpFuelHtmlImageInflectorInputLangLogMarkdownMigrateModel_CrudModuleMongo_DbNumPackagePaginationProfilerRedisRequestResponseRouterSecuritySessionStrThemeUploadUriValidationView
  42. 42. クラスの使い方 静的な呼び出し<form action="http://localhost/blog/uri/to/form" accept­charset="utf­8" method="post">echo Form::open(uri/to/form);出力されるHTML
  43. 43. クラスの使い方 インスタンス化$val = Validation::forge();$val­>add(title, Title)­>add_rule(required);if ($val­>run()){...}else{...}
  44. 44. FuelPHPのセキュリティ フールプルーフではない!➔フールプルーフとは?「よくわかっていない人が扱っても安全」-- http://e-words.jp/➔○○を使っていれば安全 ただし、FuelPHPには、➔デフォルトのセキュリティ機能➔手動で利用するセキュリティ機能• フレームワークを使わない場合より、かなり安全
  45. 45. 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では自動エスケープ
  46. 46. FuelPHPのセキュリティ セキュリティ機能➔Input filtering• config.phpのsecurity.input_filter➔CSRF保護• 自動ではないが支援機能あり➔XSS filtering• HTMLawedというライブラリが付属
  47. 47. FuelPHPの高い拡張性 Coreクラス➔継承・置き換え可能• コアクラスを置き換えずに拡張する• コアクラスを拡張し、置き換える• パッケージからコアを拡張する
  48. 48. 公式ドキュメントの翻訳 https://github.com/NEKOGET/FuelPHP_docs_jp http://fuelphp.jp/ 翻訳を手伝ってくれる人を募集中
  49. 49. FuelPHPについての日本語情報 FuelPHP まとめ Wikihttp://wiki.fuelphp1st.com/wiki/
  50. 50. FuelPHPについての日本語コミュニティ fuelphp.jp Googleグループhttps://groups.google.com/group/fuelphp_jp?hl=ja twitter 「fuelphp」で検索https://twitter.com/search/realtime?q=fuelphp&src=typd facebook FuelPHP日本語ニュースhttps://www.facebook.com/jp.fuel
  51. 51. FuelPHPについての書籍 『FuelPHP Advent Calendar 2011』技術評論社 『FuelPHP入門』ソーテック社 『はじめてのフレームワークとしてのFuelPHP』達人出版会 『FuelPHP Advent Calendar 2012』達人出版会
  52. 52. FuelPHPについての書籍無料 無料
  53. 53. まとめ FuelPHPは、シンプルでフレキシブルなコミュニティにより開発されているPHP5.3のフレームワークです。 日本のユーザも増え、採用事例も増えてきました。 公式ドキュメントの翻訳を手伝ってくれる人を募集しています。
  54. 54. このファイルのライセンス This work is licensed under theCreative Commons 表示 - 継承 3.0 非移植 License. To view a copy of thislicense, visithttp://creativecommons.org/licenses/by-sa/3.0/.

×