Mais conteúdo relacionado Semelhante a 最近、僕がハマったFuelPHPの紹介 (20) 最近、僕がハマったFuelPHPの紹介2. 自己紹介
• @mawatarin
• ウェブプログラマ
• Perlを4年くらい
• そのあとPHPを4年くらい
• ただ最近は専らマネジメントより
5. セッションを始める前に
• まず、言い訳から始めさせてください!
• 1週間前に子どもが生まれました!
• そのため、スライドを作る時間がほとんどありません
でしたっっっ
• ネタとか仕込む間もなかったので、つまらなかったら
ごめんなさい
6. セッションを始める前に
• 事前のヒアリングでFuelPHPに関しては名前は聞いた
ことあるけど、使ってことがないという人が多かった
です
• とりあえず、ざっくりFuelPHPの概要を伝えるスライド
を作りました
16. 1. FuelPHPに興味を持ったきっかけ
こんな風にコントローラを実装
class Controller_User extends Controller_Rest
public function get_list()
{
$user = Model_User::forge();
$data = $user->find(Input::get('id'));
$this->response($data);
}
}
// 実際はもっと作り込みますが……
25. 1. RESTコントローラの使い方
• Controller_Rest クラスを継承します
• 実装するメソッドには、HTTPメソッドのプレフィック
スをつけます
• URLのメソッド名に続けて、出力フォーマットの拡張子
を付けます
26. 1. RESTコントローラの解説
Controller_Rest クラスを継承
class Controller_User extends Controller_Rest
public function get_list()
{
$user = Model_User::forge();
$data = $user->find(Input::get('id'));
$this->response($data);
}
}
33. 2. FuelPHPとは
つたない和訳ですが
FuelPHPは他のフレームワークの
良いところを参考にし、コミュ
ニティ駆動で一から開発された
PHP5.3を対象としたシンプルで
柔軟なウェブアプリケーション
フレームワークです。
35. 2. FuelPHPとは
• フューエル・ピー・エイチ・ピーと読みます
• 2011年7月にversion 1.0が出た新しいフレームワーク
• その後、2011年12月に1.1、2012年6月に1.2リリース
36. 2. FuelPHPとは
• フューエル・ピー・エイチ・ピーと読みます
• 2011年7月にversion 1.0が出た新しいフレームワーク
• その後、2011年12月に1.1、2012年6月に1.2リリース
• FuelPHPのコア開発者5名すべてはCodeIgniterの開発に
関わっている(いた)
• 他のフレームワークの良い所取りをしたCodeIgniter
ライクなフレームワーク
37. 2. FuelPHPとは
• 規約より設定
• PHP5.3以上必須
• オートローダー
• oilコマンド
• スキャフォールディング
• DBマイグレーション
• テスト、タスク
• モジュール、パッケージ、HMVC、 ViewModel
• MITライセンス
39. 3. FuelPHPのインストール
$ curl get.fuelphp.com/oil | sh
$ oil create /path/to/install_dir/project_name
58. 3. FuelPHPのフォルダ構成
ViewModel
Viewファイルとは違います
ビューモデルはビューの生成に必要なロジックを含むク
ラスです。 コントローラがユーザ入力を処理し、必要な
アクションを処理すると、 ビューモデルにビューに必要
なデータを取得するように処理を引き継ぎます。
http://press.nekoget.com/fuelphp_doc_1.2/general/
viewmodels.html
60. 3. FuelPHPのフォルダ構成
Config
必要に応じて設定ファイルをオーバーライドします
例えば、環境に応じてDBを変えたり、プロファイラを有
効する等
core/config
app/config
app/config/production or app/config/development
の順でオーバーライドされます
productionまたはdevelopmentは、環境に応じて読み込まれ
ます
61. 3. FuelPHPのフォルダ構成
Config
必要に応じて設定ファイルをオーバーライドします
例えば、環境に応じてDBを変えたり、プロファイラを有
効する等
core/config
app/config
app/config/production or app/config/development
の順でオーバーライドされます
productionまたはdevelopmentは、環境に応じて読み込まれ
ます
初期状態でフォルダは存在しませんが、stage, test という
環境も定義されています
63. 4. FuelPHPの使い方 - Controller
• APPPATH/classes/controller以下に配置
• ファイル名はコントローラー名で小文字にします
• Controllerクラスを継承します
• クラス名にはController_プレフィックスをつけます
• クラス名の単語の先頭は大文字にします
• クラス名の単語の区切りにアンダースコアを使うと
サブフォルダを意味してしまうので注意が必要です
68. 4. Controllerでのお約束
クラス名の単語の区切りにアンダースコアを使うとサブ
フォルダを意味します
APPPATH/classes/controller/welcome/member.php
class Controller_Welcome_Member extends Controller
{
public function action_index()
{
return Response::forge(View::forge('welcome/index'));
}
}
71. 4. ControllerとURLの関係
ブラウザから実行されるメソッド(アクションメソッ
ド)には、action_プレフィックスをつけます
http://localhost/welcome/index
class Controller_Welcome extends Controller
{
public function action_index()
{
return Response::forge(View::forge('welcome/index'));
}
}
72. 4. ControllerとURLの関係
第三セグメント以降はパラメータ
受け取りの際はデフォルト値を設定しておいた方が無難
http://localhost/welcome/index/123
class Controller_Welcome extends Controller
{
public function action_index($page = null)
{
return Response::forge(View::forge('welcome/index'));
}
}
73. 4. Controllerの定義済みメソッドとプロパティ
詳しい解説は省略します
メソッド/プロパティ 意味
action_index() メソッド名を省略されたときに実行される
before() アクションメソッドが実行される前に自動実行
after() アクションメソッドが実行された後に自動実行
$request Requestクラスのオブジェクトを保持
$response Responseクラスのオブジェクトを保持
74. 4. Controllerクラスの種類
詳しい解説は省略します
クラス名 意味
Controller ベースコントローラ
Controller_Template ビューでレイアウト機能を使うコントローラ
Controller_Rest RESTfulなコントローラ
RestコントローラにTemplateコントローラが備
Controller_Hybrid わったもの
77. 4.Viewファイル
Viewファイルの中身については、本日は割愛します。
PHPとHTMLで構成されたファイルです。
</head>
<body>
<div id="header">
<div class="row">
<div id="logo"></div>
</div>
</div>
<div class="container">
<div class="row">
<div class="span16">
<h1><?php echo e($title); ?> <small>We can't find that!</small></h1>
<hr>
<p>The controller generating this page is found at <code>APPPATH/classes/controller/welcome.php</
code>.</p>
<p>This view is located at <code>APPPATH/views/welcome/404.php</code>.</p>
</div>
</div>
<footer>
<p class="pull-right">Page rendered in {exec_time}s using {mem_usage}mb of memory.</p>
<p>
<a href="http://fuelphp.com">FuelPHP</a> is released under the MIT license.<br>
<small>Version: <?php echo e(Fuel::VERSION); ?></small>
84. 4. FuelPHPの使い方 - Model
• APPPATH/classes/model以下に配置
• ファイル名はモデル名で小文字にします
• Modelクラスを継承します
• クラス名にはModel_プレフィックスをつけます
• クラス名の単語の先頭は大文字にします
• クラス名の単語の区切りにアンダースコアを使うと
サブフォルダを意味してしまうので注意が必要です
94. 4. oilコマンドでModelを作ってみる
Userモデルができた!
テーブルもできた!
class Model_User extends OrmModel
{
protected static $_properties = array(
'id',
'name',
'password',
'email',
'created_at',
'updated_at'
);
protected static $_observers = array(
'OrmObserver_CreatedAt' => array(
'events' => array('before_insert'),
'mysql_timestamp' => false,
),
'OrmObserver_UpdatedAt' => array(
'events' => array('before_save'),
'mysql_timestamp' => false,
),
);
}
95. 4. oilコマンドでModelを作ってみる
例えば、こんな風に書いておけば、Fieldsetクラスで自動
的にフォームを作ってくれたり、バリデートしてくれたり
class Model_User extends OrmModel
{
protected static $_properties = array(
'id',
'name' => array(
'data_type' => 'varchar',
'label' => 'お名前',
'validation' => array('required'),
'form' => array('type' => 'text'),
'default' => '',
),
'password',
'email',
'created_at',
'updated_at'
);
// 略
96. 4. oilコマンドでModelを作ってみる
リレーションの設定はこんな感じ
class Model_User extends OrmModel
{
protected static $_properties = array(
'id',
'name',
'password',
'email',
'created_at',
'updated_at'
);
protected static $_has_many = array(
comments => array(
'model_to' => 'Model_Comment',
'key_from' => 'id',
'key_to' => 'user_id',
'cascade_save' => false,
'cascade_delete' => true,
));
// 略
101. 5. セキュリティについて
出力フィルタ、URIフィルタはSecurity::htmlentities()が使わ
れます
中身
public static function htmlentities($value, $flags = null, $encoding = null, $double_encode = null)
{
static $already_cleaned = array();
is_null($flags) and $flags = Config::get('security.htmlentities_flags', ENT_QUOTES);
is_null($encoding) and $encoding = Fuel::$encoding;
is_null($double_encode) and $double_encode = Config::get('security.htmlentities_double_encode', false);
// 略
if (is_string($value))
{
$value = htmlentities($value, $flags, $encoding, $double_encode);
}
// 略
103. 5. セキュリティについて
• ある程度は、自動的に保護してくれる
• または保護をするクラスが用意されている
• ただ過信は禁物!
• ウェブアプリケーション制作に関わる以上、アンテナを
常に張りセキュリティに関する知識を高めておく必要が
ある
106. 6. 開発補助 - プロファイラ
config で 'profiling' => true にすることで、プロファイラが
使えます
107. 6. コアクラス一覧
• Agent • Form • Package
• Arr • Format • Pagination
• Asset • Ftp • Profiler
• Autoloader • Fuel • Redis
• Cache • Html • Request
• Cli • Image • Response
• Config • Inflector • Router
• Cookie • Input • Security
• Crypt • Lang • Session
• Database • Log • Str
• Date • Markdown • Theme
• Debug • Migrate • Upload
• Event • Model_Crud • Uri
• Fieldset • Module • Validation
• File • Mongo_Db • View
• Finder • Num
108. 7月1日から20日間FuelPHPを触ってみた感想
• 必要な機能は大凡そろってるかなー
• シンプルで、やりたいことがサクッとできるイメージ
• ただ、フィーチャーフォン(いわゆるガラケー)向け
のウェブアプリを作ったりするのは苦手分野かな?
(ただ単に調べきれてないとも言う)
• その辺は、CakePHPとかの方が一日の長がある感じ
• まあ実質1週間くらいしか触ってないけどね!
109. こんな人にはFuelPHPを勧めてみます
• 現場から少し離れてたけど、やっぱり自分でもアプリ
ケーションを作りたい人
• WordPress等を通してPHPでのアプリケーション制作に
興味を持ったけど、何から手を付けたら良いかわから
ない人
• CodeIgniterのライセンス騒動に疲弊した人
• このスライドを通して興味を持ったもの皆
111. 参考文献とかウェブページとか
FuelPHP 入門
2012年6月20日 初版 第1刷発行
ブログ作成を通して、FuelPHPの使い方等を学びます。
フォーム処理、認証管理、メール送信等。
はじめてのフレームワークとしての FuelPHP
2012年7月2日 バージョン0.9.0発行
フレームワークとはなんぞやという所から始まって、FuelPHPを用いた
ウェブアプリケーション作成について学びます。テスト手法について
しっかりと書かれているのが好印象。電子書籍のみの販売。
達人出版会
http://tatsu-zine.com/books/fuelphp1st
113. 勉強会のお知らせ
• ウェブプログラマ向けの勉強会をやってます
• PC持ち込んでやる勉強会です
• 月に1∼2回くらいのペースです
• 現在はPHPerも、ちゃんとCIしようってことで、
Jenkinsの勉強をしています
• 一人で悩んでても仕方ない!がコンセプトなので、
皆さんもお気軽に、ご参加ください!
115. さいごに
ご清聴ありがとうございました
@mawatarin