• Save
10分でわかるFuelPHP @ OSC2013 Nagoya
Upcoming SlideShare
Loading in...5
×
 

10分でわかるFuelPHP @ OSC2013 Nagoya

on

  • 7,015 views

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

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

Statistics

Views

Total Views
7,015
Views on SlideShare
3,383
Embed Views
3,632

Actions

Likes
8
Downloads
4
Comments
0

12 Embeds 3,632

http://programmerbox.com 2782
http://d.hatena.ne.jp 504
http://localhost 225
https://twitter.com 64
http://feedly.com 20
http://www.feedspot.com 12
http://hatenatunnel.appspot.com 9
http://webcache.googleusercontent.com 6
http://rss.ameba.jp 4
http://cloud.feedly.com 3
https://www.google.co.jp 2
https://www.chatwork.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 @ OSC2013 Nagoya 10分でわかるFuelPHP @ OSC2013 Nagoya Presentation Transcript

    • 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/09 1.3リリース 2012/11/09 1.4リリース 2013/01/20 1.5リリース 2013/05/03 1.6リリース 2013/06/09 1.6.1リリース (←今ここ)
    • 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       (2013/6/21調べ)
    • FuelPHPの利用例http://sp.demae-can.com/
    • FuelPHPの利用例http://animita.tv/
    • FuelPHPの利用例http://bushidotickets.com/
    • フレームワークとは? Webアプリケーションフレームワークとは?➔Webアプリケーションを作成する「枠組み」➔機能としては• 過去のプログラミングの経験則の規約化• 頻繁に使う機能を抽象化(モジュール化、ライブラリ化)➔Webアプリケーション全体を見通しよく開発できるようにするもの
    • FuelPHPに向いている人 CodeIgniterを知っている人➔開発者がCodeIgniter系の人なので、かなり似ている Kohanaを知っている人➔Kohanaも参考に作られていますので、さらに似ている(Kohana+α=FuelPHP) Configuration over Convention➔規約が嫌いな人➔CodeIgniter系のフレームワークなので、強制的な規約は最小限になっている
    • FuelPHPに向いている人 軽量高速なフレームワークが好きな人 フレームワークをいろいろ拡張したい人➔CodeIgniterのように拡張できます 見やすいドキュメントが好きな人➔CodeIgniterのユーザガイドのように見やすいです(ただし、翻訳率は現在64%程度) コマンドラインが好きな人(嫌いでも可)
    • FuelPHPに向いている人 他のフレームワークに挫折した人➔ドキュメントがわかりにくい➔規約が多すぎて覚えきれない➔デカすぎてソースが読めない➔難しすぎる
    • FuelPHPを使うメリット 高速な動作➔軽量で動作が高速 最新のPHPフレームワーク➔PHP 5.3以降なので、5.3の機能をフルに使える コードや仕様がクリーン➔PHP 5.3でゼロから書かれたフレームワークなので、完全にOOPであり、クリーンなコード➔PHP4を引きずっていたりしない
    • FuelPHPを使うメリット バランス➔CodeIgniterよりは広い範囲をカバーしている(多機能)➔ビューのレイアウト機能、モデルのCRUD機能、HMVC、認証インターフェイス、ORM、PHPUnitでのテストなど コマンドラインによるパワフルな機能➔ScaffoldingやMigration
    • MVCモデルとは? Controller(コントローラ)は、入力データに従って適切なデータを呼び出しModelやViewの連携など、アプリケーション全体の制御を行う Model(モデル)は、データベースへのアクセスやデータの修正/加工などのデータの管理を行う View(ビュー)は、処理結果の表示など、画面表示を担当する
    • MVCモデルController流れの制御などView画面表示Modelデータの管理・リクエスト・データ入力結果結果結果呼び出し呼び出し
    • FuelPHPのフォルダ構成公式ドキュメントアプリケーションを配置FuelPHP本体FuelPHPのパッケージoilコマンドWeb公開領域フロントコントローラcss、img、jsComposerのパッケージ
    • FuelPHPのフォルダ構成アプリケーションを配置コントローラを配置モデルを配置ビューモデルを配置ビューを配置クラスを配置キャッシュフォルダブートストラップ設定ファイルを配置言語ファイルを配置ログフォルダDBマイグレーションファイルを配置モジュール(HMVC)を配置タスク(CLIから起動するクラス)を配置tmpフォルダテスト(PHPUnit)を配置
    • FuelPHPのURLの構造 URLの構造http://example.jp/コントローラ/メソッド/引数class Controller_Shop extends Controller{...function action_search($id){...}}http://example.jp/shop/search/123
    • Controller Controllerクラスを継承 クラス名には先頭に「Controller_」を付ける 「Controller_」の後の単語の先頭は大文字 アクションメソッド名には先頭に「action_」を付ける ファイル名やフォルダ名はすべて小文字(FuelPHPでの共通の規約) クラス名の中の「_」はフォルダ区切りになる
    • 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/
    • 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
    • ControllerURLとクラス名の対応 http://example.jp/time_message ?➔class Controller_Time_Message ?➔controller/time_message.php ?➔クラス名の「_」はフォルダ区切りになるのでこれは使えない➔404 Not Found 規約に外れるものはルーティング設定が必要
    • ControllerURLとクラス名の対応 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なコントローラ➔Web APIがすぐに作成できる➔Controller_Restクラスを継承する Hybrid Controller➔Rest Controller + Template➔Controller_Hybridクラスを継承する
    • 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のコード
    • View (オプション)Parserモジュール 以下のテンプレートを標準でサポート➔Smarty / Twig / Dwoo / PHPTAL /Mustache / Jade / Haml /Markdown packages/parser/README.md参照
    • 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){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);
    • 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, 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でカラム名を定義する
    • 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);
    • ORM Model拡張したクラス OrmModel_Soft➔論理削除 OrmModel_Temporal➔データのバージョン管理 OrmModel_Nestedset➔階層構造のデータ その他➔ORM ModelでEAV(Entity-Attribute-Value)モデルを扱う機能
    • Coreクラス どんなものがあるか?AgentArrAssetAutoloaderCacheCliConfigCookieCryptDatabaseDateDebugEventFieldsetFileFinderFormFormatFtpFuelHtmlImageInflectorInputLangLogMarkdownMigrateModel_CrudModuleMongo_DbNumPackagePaginationProfilerRedisRequestResponseRouterSecuritySessionStrThemeUploadUriValidationView
    • クラスの使い方 静的な呼び出し<form action="http://localhost/blog/uri/to/form" accept­charset="utf­8" method="post">echo Form::open(uri/to/form);出力されるHTML
    • クラスの使い方 インスタンス化$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://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://twitter.com/search/realtime?q=fuelphp&src=typd facebook FuelPHP日本語ニュースhttps://www.facebook.com/jp.fuel
    • FuelPHPについての書籍 『FuelPHP Advent Calendar 2011』技術評論社 『FuelPHP入門』ソーテック社 『はじめてのフレームワークとしてのFuelPHP』達人出版会 『FuelPHP Advent Calendar 2012』達人出版会
    • FuelPHPについての書籍無料 無料
    • まとめ FuelPHPは、シンプルでフレキシブルなコミュニティにより開発されているPHP5.3のフレームワークです。 日本のユーザも増え、採用事例も増えてきました。 公式ドキュメントの翻訳を手伝ってくれる人を募集しています。
    • このファイルのライセンス This work is licensed under theCreative Commons 表示 - 継承 3.0 非移植 License. To view a copy of thislicense, visithttp://creativecommons.org/licenses/by-sa/3.0/.