More Related Content
Similar to 10分でわかるFuelPHP @ 2011/12 (20)
10分でわかるFuelPHP @ 2011/12
- 4. 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公式リリース(←今ここ)
- 9. FuelPHPに向いている人
CodeIgniterを知っている人
➔ 開発者がCodeIgniter系の人なので、
かなり似てます
Kohanaを知っている人
➔ Kohanaも参考に作られていますので、
さらに似てます(Kohana+α=FuelPHP)
Configuration over Convention
➔ 規約が嫌いな人
➔ CodeIgniter系のフレームワークですので、強制
的な規約は最小限になっています
- 12. FuelPHPを使うメリット
高速な動作
➔ 軽量で動作が高速
最新のPHPフレームワーク
➔ PHP5.3以降なので、5.3の機能をフルに使
える
コードや仕様がクリーン
➔ PHP5.3でゼロから書かれたフレームワーク
なので、完全にOOPであり、クリーンなコー
ド
➔ PHP4を引きずっていたりしない
- 13. FuelPHPを使うメリット
バランス
➔ CodeIgniterよりは広い範囲をカバーして
いる
➔ ビューのレイアウト機能、モデルのCRUD機
能、認証ライブラリ、ORMなど
コマンドラインによるパワフルな機能
➔ ScaffoldingやMigration
- 14. MVCモデルとは?
Controller(コントローラ)は、
入力データに従って適切なデータを呼び出し
ModelやViewの連携など、アプリケーション
全体の制御を行う
Model(モデル)は、
データベースへのアクセスやデータの修正/
加工などのデータの管理を行う
View(ビュー)は、
処理結果の表示など、画面表示を担当する
- 15. MVCモデル
Controller
・リクエスト 流れの制御など 呼び出し
・データ入力
結果
結果
Model
結果 呼び出し データの管理
View
画面表示
- 16. FuelPHPのフォルダ構成
公式ドキュメント
アプリケーションを配置
FuelPHP本体
FuelPHPのパッケージ
oilコマンド
Web公開領域
フロントコントローラ
- 17. FuelPHPのフォルダ構成
アプリケーションを配置
ブートストラップ
キャッシュフォルダ
クラスを配置
コントローラを配置
モデルを配置
ビューモデルを配置
設定ファイルを配置
言語ファイルを配置
ログフォルダ
マイグレーションファイルを配置
モジュールを配置
タスクを配置
tmpフォルダ
サードパーティライブラリを配置
ビューを配置
- 20. 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
);
}
}
- 21. 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が優先
- 22. Controller
URLとクラス名の対応
http://example.jp/time_message
➔ class Controller_Time_Message
➔ controller/time_message.php
➔ クラス名の「_」はフォルダ区切りになるので
これは使えない → 404
- 23. Controller
URLとクラス名の対応
http://example.jp/time/time_message
➔ class Controller_Time
➔ controller/time.php
➔ function action_time_message()
➔ メソッド名の「_」はOK
- 24. Controller
拡張したクラス
Template Controller
➔ ビューのレイアウト機能を追加したもの
➔ Controller_Templateクラスを継承する
Rest Controller
➔ RESTfulなコントローラ
➔ Controller_Restクラスを継承する
- 25. 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);
- 32. Modelの使い方
その1
メソッドを呼び出す
$data['posts'] = Model_Post::find_all();
Modelのコード
class Model_Post extends Model
{
function find_all()
{
...
}
}
- 33. Modelの使い方
その2
メソッドを呼び出す
$data['posts'] = ModelPost::find_all();
Modelのコード
namespace Model;
class Post extends Model
{
function find_all()
{
...
}
}
- 34. Model
拡張したクラス
Model_Crudクラス
➔ CRUD機能を追加したもの
➔ Model_Crudクラスを継承する
- 36. ORM
2. Modelの作成
fuel/app/classes/model/post.php
<?php
namespace 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でカラム名を定義する
- 37. ORM
3. クエリの実行
// SQLクエリの実行
$result = ModelPost::find('all');
// 表示処理
foreach ($result as $row)
{
echo $row['id'] . ' ';
echo $row['title'] . ' ';
echo $row['summary'] . '<br />';
}
echo 'レコード数: ' . count($result);
- 38. Coreクラス
どんなものがあるか?
Agent Database Fuel Mongo_Db Str
Arr Date Html Num Upload
Asset Debug Image Package Uri
Autoloader Event Inflector Pagination Validation
Cache Fieldset Input Redis View
Cli File Lang Request
Config Form Log Response
Cookie Format Migrate Security
Crypt Ftp Model_Crud Session
- 40. クラスの使い方
インスタンス化
$val = Validation::forge();
$val>add('title', 'Title')
>add_rule('required');
if ($val>run())
{
...
}
else
{
...
}
- 41. FuelPHPのセキュリティ
フールプルーフではない!
➔ フールプルーフとは?
「よくわかっていない人が扱っても安全」
-- http://e-words.jp/
➔ ○○を使っていれば安全
ただし、FuelPHPには、
➔ デフォルトのセキュリティ機能
➔ 手動で利用するセキュリティ機能
• フレームワークを使わない場合より、
かなり安全
- 42. 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では自動エスケープ
- 43. FuelPHPのセキュリティ
セキュリティ機能
➔ Input filtering
• config.phpのsecurity.input_filter
➔ CSRF保護
• 自動ではないが支援機能あり
➔ XSS filtering
• HTMLawedというライブラリが付属している