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