Movatterモバイル変換


[0]ホーム

URL:


SlideShare a Scribd company logo

FuelPHP Osu Nagoya vol.1

8 likes3,021 views
Fumito Mizuno
Fumito Mizuno

FuelPHP 勉強会の資料。fuel.php-web.net を題材としている。FuelPHP の概要、PHPTAL や PHPUnit 等名古屋コワーキングスペース アートファクトリーで開催

1 of 53
Downloaded 31 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
FuelPHP 勉強会 大須 vol. 1          水野 史土     mizuno@php-web.net
FuelPHP とは● 軽量&シンプルなフレームワーク  ○ ファイル 756(5.1 MB)、含ドキュメント  ○ cf. CakePHP2.1.3 ファイル 1,356(8.8 MB)● 最初から PHP5.3 前提● ルールが緩い● オープンソース  ○ https://github.com/fuel  ○ 多くのユーザーがコミットしている
フォルダ構成         fuel 本体            app            core            packages         public 公開部分
fuel/app フォルダ           コントローラ、モデルは           classes 配下           ビューは app/views を使う
作ってみたサイト● FuelPHP クラス名検索 ○   http://fuel.php-web.net/ ○   FuelPHP のクラス名から、ソースコード閲覧 ○   PHP のリフレクション機能を活用 ○   Model は未使用● 使用したソースコード ○   https://github.com/twitter/bootstrap ○   https://github.com/jquery ○   https://github.com/pornel/PHPTAL ○   https://github.com/kenjis/sample-contact-form/
http://fuel.php-web.net/
http://fuel.php-web.net/ の構造リフレクション             ビュー(通常のアプリ            PHPTALのモデル部分)         コントローラ
コントローラ● fuel/app/classes/controller に置くfuel/app/classes/controller/methodlist.phpclass Controller_Methodlist extends Controller{   public function action_index()   {   …
コントローラのクラス● Controller_(ファイル名) というクラス名  ○ (ファイル名) の先頭は大文字● Controller を継承する
コントローラのメソッド名● action_hoge メソッド  ○ URL/クラス名/hoge でアクセス可能  ○ URL/クラス名/ => action_index● action_ をつけないメソッド  ○ ブラウザからは(たぶん)呼び出しできないfuel.php-web.net では、フォームを作るメソッド _form()$this->_form() で呼び出している
特殊なメソッド名● before()  ○ 他のメソッドの呼び出し前に実行● after($response)  ○ 他のメソッドの呼び出し後に実行fuel.php-web.net では未使用
URL とコントローラの対応     URL/methodlist/index                 ↓  methodlist.php の action_index()    URL/methodlist/list/Arr                ↓ methodlist.php の action_list('Arr')
ルーティング● fuel/app/config/routes.php で設定_root_ トップページへアクセスした時( http://fuel.php-web.net/ )_404_ 見つからない時(キャッチオール的に使える)(404 レスポンス を指定する必要あり)
fuel/app/config/routes.phpreturn array(   '_root_' => 'methodlist/index',   '_404_' => 'methodlist/404',);         fuel.php-web.net にアクセス                     ↓fuel.php-web.net/index.php/methodlist/index
ビューのファイルを指定する$view = View::forge('methodlist/index');素のビューを使う場合は、View::forge(フォルダ/ファイル名)で指定する
ビューに渡すデータ設定 方法1$view = View::forge('methodlist/index');$view->set('title', 'クラス名検索');$view->set(変数名, 値)
ビューに渡すデータ設定 方法2$view = View::forge('methodlist/index');$view->title = 'クラス名検索';$view->変数名 = 値
ビューに渡すデータ設定 方法3$data['title'] = 'クラス名検索';return View::forge('methodlist/index',$data);連想配列に格納 → View::forge に引数で渡す
標準以外のビューを使うTwigMustacheMarkdownDwooJadeHamlSmartyPhptal
app/config/config.php  'always_load' => array(     'packages' => array(         'parser', // ここを追加する     ),     ...  );
app/vendor にライブラリを設置するライブラリをダウンロードするapp/vendor 以下に置くapp/vendor/PHPTAL/PHPTAL.phpMustache と markdown はデフォルトで入っている
PHPTAL のライセンスFuelPHP : MITPHPTAL : LGPLライブラリは MIT とは限らない
PHPTAL を使う● コントローラ         View::forge             ↓      View_Phptal::forge      config で設定できる?
PHPTAL を使う● FuelPHP で使う場合  ○ 拡張子 .phptal (*)  ○ 明示的に指定すれば .html でも可● ファイルは app/views フォルダに置く* FuelPHP 以外では .html のこともある
PHPTAL の特徴 1● テンプレートファイル(HTML) の属性に記述する   <h1 tal:content="title">title here</h1>                      ↓     <h1>FuelPHPクラス名検索</h1>● テンプレートをブラウザで表示して確認可能
app/views/methodlist/template.phptal
<body onload="prettyPrint()">    <div class="container">         <div class="hero-unit">         <h1 id="applypos" tal:content="title" >title here</h1>         </div>         <div class="alert alert-error" tal:condition="exists:error_message" tal:content="error_message" >error message sample</div><p tal:replace="structure html_form" >Form</p><div class="row" metal:define-slot="content" >    contents here</div>         <footer>             <p class="pull-right"><a href="http://fuel.php-web.net/">http://fuel.php-web.net/</a> is programmed by <a href="http://php-web.net/">PHPでWEB作成</a></p>             <p>                  <a href="http://fuelphp.com">FuelPHP</a> is releasedunder the MIT license.<br />             </p>         </footer>    </div></body></html>
PHPTAL の特徴 2● ビュー変数の出力をデフォルトエスケープ  ○ FuelPHP もデフォルトエスケープする● FuelPHP のエスケープを無効にする方法    'auto_filter_output' => false,● HTML 属性をクォートしないとエラー  ○ エラー例: <div class=menu>メニュー</div>
PHPTAL の特徴 3● 継承できる (ただし、ややこしい)● 親 template.phptal<html metal:define-macro="template"><div metal:define-slot="content">● 子 index.phptal<html metal:use-macro="template.phptal/template"><div metal:fill-slot="content">
PHPTAL のデメリット● パフォーマンス ○ smarty より遅いらしい http://d.hatena.ne.   jp/tanakahisateru/20100906/1283766620● テンプレート HTML が厳密 ○ 例えば、</p> 無しだとエラー● 日本語の情報が少ない
CSRF とは● Cross Site Request Forgery● 取り消しできない重要な処理を実行させる  ○ by 「安全な Web アプリケーションの作り方」 (徳丸浩)● 被害者自身の操作で意図しないHTTPリクエスト  を送信させる攻撃  ○ by 「PHP逆引き516の大全」(大家正登, 鮫島康浩, 谷    中志織, 茂木健一)
CSRF 対策● 重要な処理の直前の画面でトークン発行 ○ $form->add(Config::get('security.   csrf_token_key'),'token',array   ('type'=>'hidden','value'=>Security::   fetch_token())) ; ○ $form->add_csrf(); (Form のみ?)● 重要な処理実行時にチェック  ○ クッキー(*)の値と照合する ○ Security::check_token()* FuelPHP では(デフォルトでは)クッキーを使用
トークンを発行する箇所   入力画面       実行  トークン発行      チェック
トークンを発行する箇所   入力画面            実行  トークン発行          チェック           罠ページ   正規のトークンが                  無いので処理を                  実行しない
トークンを発行する箇所入力画面   確認画面      実行                チェック  確認画面がある場合はどうなるか?
トークンを発行する箇所入力画面    確認画面      実行       トークン発行    チェック     確認画面がある場合  重要な処理実行の直前 = 確認画面
XSS とは● クロスサイトスクリプティング● 外部からの入力などに応じて表示が変化する  箇所があり、この部分のHTML生成の実装に問  題がある ○ by 「安全な Web アプリケーションの作り方」 (徳丸浩)● 2つ以上のサイトをまたがって、脆弱なサイトに  悪意のあるスクリプトを混入させる ○ by 「PHP逆引き516の大全」(大家正登, 鮫島康浩, 谷   中志織, 茂木健一)
XSS 対策● 出力 HTML をエスケープする  ○ FuelPHP/PHPTAL はデフォルトエスケープ    ■ エスケープ漏れが生じにくい● HTML 属性値をクォートする  ○ PHPTAL は、クォート無しをハネる    ■ ミスによる脆弱性が防げる
バリデーション● 入力値の間違いを早期に発見して再入力を促  すことにより、ユーザビリティを向上する ○ by 「安全な Web アプリケーションの作り方」 (徳丸浩)● 間違った処理を継続することによるデータの不  整合などを防ぎ、システムの信頼性を向上させ  る ○ by 「安全な Web アプリケーションの作り方」 (徳丸浩)
バリデーション● add_rule で追加していく$form->add('classname','クラス名')      ->add_rule('trim')      ->add_rule('valid_string',array('alpha','dashes'))      ->add_rule('required')      ->add_rule('max_length',30)      ;php の関数(trim 等)も使用できるvalid_string はややこしい&ハマりやすい
バリデーション $val = $form->validation(); if ($val->run()) {    検証を通過した場合 } else {    検証に失敗した場合 }
reflection● クラスや関数等の情報を表示する  ○   メソッド、プロパティの情報取得  ○   コメントの取得  ○   クラス/関数が定義されているファイル名、行数の取得  ○   protected/private メソッド実行● PHP の機能  ○ ReflectionClass が用意されている  ○ FuelPHP 以外でも利用可能
Reflection クラスのメソッドgetFileName()getStartLine()getEndLine()getMethods()詳細は PHP マニュアル参照http://www.php.net/manual/ja/book.reflection.php
クラスのソースコードの表示getFileName() でファイル名を取得そのファイルを読み込むgetStartLine(), getEndLine() で範囲をチェックgetMethods() でメソッド一覧を取得
ユニットテスト● 個々のメソッドのテスト ○ メソッドの返り値のチェック等● テストケースを残す ○ 繰り返し実行可能
ユニットテスト● FuelPHP では、PHPUnit を利用する● oil から実行可能  ○ php oil test  ○ php oil test --group=App  ○ php oil test --group=Core
FuelPHP をインストールしたルートで実行する
ユニットテストを書く● app/tests フォルダに置く● @group App アノテーションを書く/** * * @group App */class Test_SourceView extends TestCase
assertEquals で値が等しいかチェックfunction test_sourceview(){   $classname = 'Date';   $expected = 'クラス名:'.$classname;   $data = Controller_Methodlist::_sourceview($classname);   $title = $data->title;   $this->assertEquals($expected,$title);}
例外のテスト(アノテーションをつける)/** * @expectedException InvalidArgumentException **/function test_sourceview_argument_null_raises_exception(){    $data = Controller_Methodlist::_sourceview('');}
ユニットテスト● カバレッジ(*)も確認できる ○ php oil test --group=App --coverage-html ./report/ ○ xdebug の設定が必要* コードのうち、どれくらいがテストされているか = テストされている部分/コード全体
テスト通過 : 緑、 未テスト : 橙
今後の予定● 開催日時・頻度 ○ 平日夜で良いか? ○ 定期開催するか?頻度は?● 考えているネタ ○ 効率的なWebアプリケーションの作り方 ○ Novius OS http://www.novius-os.org/
Ad

Recommended

PDF
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
 
PDF
10分でわかるFuelPHP @ 2011/12
kenjis
 
PDF
Fuel php osc tokyo2012
Fumito Mizuno
 
KEY
FuelPHPをさわってみて
Sotaro Omura
 
PDF
はじめての FuelPHP
Sho A
 
PDF
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
kenjis
 
PDF
FuelPHPで3種のprofilerを使ってみた
Katsuhiro Miura
 
KEY
最近、僕がハマったFuelPHPの紹介
Naoto Mawatari
 
PPTX
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
Mika Kane
 
PPTX
今、最も勢いのあるWebフレームワーク「fuel php」
Soudai Sone
 
PDF
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
 
PDF
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
 
PDF
実"戦"CakePHP Plugin
Kenichirou Oyama
 
PDF
FuelPHPでのファイルアップロード
kenjis
 
PDF
PHP勉強会 #51
Takako Miyagawa
 
PDF
CodeIgniter入門
Sho A
 
PDF
NetBeansではじめる FuelPHP
Junichi Yamamoto
 
KEY
あらためてPHP5.3
Masashi Shinbara
 
PPTX
Fuelphp1.8を始めたい
運営 sollastudio
 
PDF
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
suno88
 
PDF
Osc2014
Soudai Sone
 
PDF
20091030cakephphandson 01
Yusuke Ando
 
PDF
Symfony2でより良いソフトウェアを作るために
Atsuhiro Kubo
 
PDF
第21回Creators MeetUp
Kenichi Mukai
 
PDF
10分でわかるFuelPHP @ OSC2013 Nagoya
kenjis
 
PDF
Flask勉強会その1
Masato Kawamura
 
PDF
cpanfile
Yoshihiro Sasaki
 
PPT
PHP buildpackでhackとphalconが動いた件について
健治郎 安井
 
PDF
ぺちぱな。 はじまり
Ryo Tajima
 
KEY
PHPカンファレンス 2012 フレームワークアップデート FuelPHP
Kenichi Mukai
 

More Related Content

What's hot(20)

PPTX
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
Mika Kane
 
PPTX
今、最も勢いのあるWebフレームワーク「fuel php」
Soudai Sone
 
PDF
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
 
PDF
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
 
PDF
実"戦"CakePHP Plugin
Kenichirou Oyama
 
PDF
FuelPHPでのファイルアップロード
kenjis
 
PDF
PHP勉強会 #51
Takako Miyagawa
 
PDF
CodeIgniter入門
Sho A
 
PDF
NetBeansではじめる FuelPHP
Junichi Yamamoto
 
KEY
あらためてPHP5.3
Masashi Shinbara
 
PPTX
Fuelphp1.8を始めたい
運営 sollastudio
 
PDF
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
suno88
 
PDF
Osc2014
Soudai Sone
 
PDF
20091030cakephphandson 01
Yusuke Ando
 
PDF
Symfony2でより良いソフトウェアを作るために
Atsuhiro Kubo
 
PDF
第21回Creators MeetUp
Kenichi Mukai
 
PDF
10分でわかるFuelPHP @ OSC2013 Nagoya
kenjis
 
PDF
Flask勉強会その1
Masato Kawamura
 
PDF
cpanfile
Yoshihiro Sasaki
 
PPT
PHP buildpackでhackとphalconが動いた件について
健治郎 安井
 
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
Mika Kane
 
今、最も勢いのあるWebフレームワーク「fuel php」
Soudai Sone
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
 
実"戦"CakePHP Plugin
Kenichirou Oyama
 
FuelPHPでのファイルアップロード
kenjis
 
PHP勉強会 #51
Takako Miyagawa
 
CodeIgniter入門
Sho A
 
NetBeansではじめる FuelPHP
Junichi Yamamoto
 
あらためてPHP5.3
Masashi Shinbara
 
Fuelphp1.8を始めたい
運営 sollastudio
 
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
suno88
 
Osc2014
Soudai Sone
 
20091030cakephphandson 01
Yusuke Ando
 
Symfony2でより良いソフトウェアを作るために
Atsuhiro Kubo
 
第21回Creators MeetUp
Kenichi Mukai
 
10分でわかるFuelPHP @ OSC2013 Nagoya
kenjis
 
Flask勉強会その1
Masato Kawamura
 
PHP buildpackでhackとphalconが動いた件について
健治郎 安井
 

Viewers also liked(11)

PDF
ぺちぱな。 はじまり
Ryo Tajima
 
KEY
PHPカンファレンス 2012 フレームワークアップデート FuelPHP
Kenichi Mukai
 
PDF
あにみた!(PHPカンファレンス用資料)
Hiroyuki Ishiyama
 
PDF
Ospn fuel php
Kenichi Mukai
 
KEY
FuelPHP + Pagoda Box
Sotaro Omura
 
PDF
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
web2citizen
 
PDF
Let’s translate FuelPHP docs!
Sho A
 
KEY
CakePHP vs FuelPHP
Sotaro Omura
 
PDF
フレームワーク入門書の決定版が完成
kenjis
 
PPTX
今日から始めるLaravel
Masaru Matsuo
 
PDF
Laravel5を使って開発してみた
Takeo Noda
 
ぺちぱな。 はじまり
Ryo Tajima
 
PHPカンファレンス 2012 フレームワークアップデート FuelPHP
Kenichi Mukai
 
あにみた!(PHPカンファレンス用資料)
Hiroyuki Ishiyama
 
Ospn fuel php
Kenichi Mukai
 
FuelPHP + Pagoda Box
Sotaro Omura
 
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
web2citizen
 
Let’s translate FuelPHP docs!
Sho A
 
CakePHP vs FuelPHP
Sotaro Omura
 
フレームワーク入門書の決定版が完成
kenjis
 
今日から始めるLaravel
Masaru Matsuo
 
Laravel5を使って開発してみた
Takeo Noda
 
Ad

Similar to FuelPHP Osu Nagoya vol.1(20)

PDF
FuelPHP活用事例
Yusuke Naka
 
PPTX
Fuel php勉強会 1
Kazuya Igari
 
PDF
第104回 php勉強会@東京 Laravel
JunKeun Lee
 
PDF
フレームワークを使うべき 3 つの理由
Kenichi Mukai
 
PPTX
FuelPHPにアプリと管理ツールを同居してみる
Makoto Shimoda
 
PDF
PHPフレームワーク入門
Sho A
 
PPTX
Webシステム脆弱性LT資料
Tomohito Adachi
 
PDF
FuelPHPを3ヶ月使ってみて
Tetsuji Koyama
 
PDF
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
 
PDF
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
 
PPTX
PHPCON_TOKYO_2022_Bigginer.pptx
Hideo Kashioka
 
PDF
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
 
PDF
スクリプト言語PHP攻略法
Rui Hirokawa
 
PDF
いよいよPHPerもリーンで行こう
Tsutomu Chikuba
 
PPTX
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
 
PDF
Osc2012 fall fuel_php
Kenichi Mukai
 
PPT
symfony 1.2を支えるサブフレームワーク
Katsuhiro Ogawa
 
PDF
Silex入門
Takuya Sato
 
PPT
2009年のPHPフレームワーク
Takuya Sato
 
PDF
FukuokaPHP 3
ichikaway
 
FuelPHP活用事例
Yusuke Naka
 
Fuel php勉強会 1
Kazuya Igari
 
第104回 php勉強会@東京 Laravel
JunKeun Lee
 
フレームワークを使うべき 3 つの理由
Kenichi Mukai
 
FuelPHPにアプリと管理ツールを同居してみる
Makoto Shimoda
 
PHPフレームワーク入門
Sho A
 
Webシステム脆弱性LT資料
Tomohito Adachi
 
FuelPHPを3ヶ月使ってみて
Tetsuji Koyama
 
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
 
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
 
PHPCON_TOKYO_2022_Bigginer.pptx
Hideo Kashioka
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
 
スクリプト言語PHP攻略法
Rui Hirokawa
 
いよいよPHPerもリーンで行こう
Tsutomu Chikuba
 
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
 
Osc2012 fall fuel_php
Kenichi Mukai
 
symfony 1.2を支えるサブフレームワーク
Katsuhiro Ogawa
 
Silex入門
Takuya Sato
 
2009年のPHPフレームワーク
Takuya Sato
 
FukuokaPHP 3
ichikaway
 
Ad

Recently uploaded(10)

PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 

FuelPHP Osu Nagoya vol.1


[8]ページ先頭

©2009-2025 Movatter.jp