SlideShare a Scribd company logo
1 of 40
はじめての FuelPHP

        Jul. 8, 2012
   FuelPHP 勉強会 東京



           sho <sho@codeigniter.jp>
本発表の主な対象者


PHP で Web アプリをつくったことがある

          &&


  フレームワークを使ってみたい
もくじ

• FuelPHP とは

• インストール

• MVC

• 便利な機能

• 参考情報
とは
参考: http://fuelphp.com/
FuelPHP とは

     オープンソースの PHP (>=5.3) フレームワーク
     MIT License (*1)
                •      無償で無制限に扱って良い
                       (ソースコードの公開義務なし)
                •      著作権表示、許諾表示をソフトウェアのすべての複製
                       または重要な部分に記載しなければならない
                •      作者はソフトウェアに関してなんら責任を負わない
     2011年 7月に登場
     CodeIgniter ライク

*1 参考: http://ja.wikipedia.org/wiki/MIT_License
特徴
     AN (H)MVC FRAMEWORK
               • MVC モデルに準拠


     MODULAR AND EXTENDABLE TO A FAULT
               • 気に入らない部分は拡張可能




参考: http://fuelphp.com/features
特徴
SECURITY
    • XSS、CSRF、SQL インジェクションの対策 etc.


OIL: THE POWER OF THE COMMAND LINE
    • 強力なコマンドライン (使わなくても良い)
    • コードの生成、DB マイグレーション、
      デバッグ etc.
特徴
BASE CLASSES FOR CONTROLLERS AND MODELS
   • 高機能な基底クラス
   • Controller_Rest, Model_Crud etc.


POWERFUL YET LIGHTWEIGHT ORM INCLUDED
   • 強力な OR マッパ
   • CRUD (Create / Read/ Update / Delete)
   • belongs-to, has-one, has-many, many-many
特徴
AUTHENTIFICATION FRAMEWORK
    • 認証機能を簡単に実装可能


USE ANY TEMPLATE PARSER FOR YOUR VIEWS
    • 様々なテンプレートパーサに対応
    • mustache, Markdown, Smarty, Twig, Haml,
      Jade, Dwoo, PHPTAL
Namespace                         (PHP >= 5.3)


     クラス、関数、定数の衝突を避ける機能
               • namespace <空間名>;
                    <?php                                                    関同
                                                                             数じ
                                                                             を名
                    namespace hoge¥fuga;
                    function myFunc() { echo '¥hoge¥fuga' . "¥n"; }
                                                                             定前
                                                                             義の
                    namespace hoge¥moge;                                     でク
                    function myFunc() { echo '¥hoge¥moge' . "¥n"; }          きラ
                                                                             るス
                                                                              や
                    myFunc();                               // ¥hoge¥moge
                    ¥hoge¥fuga¥myFunc();                     // ¥hoge¥fuga

                    namespace hoge;
                    fuga¥myFunc();                          // ¥hoge¥fuga
参考: http://www.php.net/manual/ja/language.namespaces.definition.php
インストール
インストール (Mac, Unix)
    Quick Installation:
            $ curl get.fuelphp.com/oil | sh
            $ oil create <ディレクトリ名>




    参考: http://get.fuelphp.com/oil の中身 (抜粋)
            sudo sh -c "curl --silent http://get.fuelphp.com/installer.sh > ${PREFIX}oil”
            sudo chmod +x ${PREFIX}oil


    参考: http://get.fuelphp.com/installer.sh の中身 (抜粋)
            git clone --recursive git://github.com/fuel/fuel.git "./$2"
            php "./$2/oil" refine install



参考: http://docs.fuelphp.com/
ディレクトリ構成 (の一部)
/
├fuel/
│├app/
││├classes/
│││├controller/ … Controller
│││└model/ ……… Model
││├config/ ………… 設定ファイル
││└view/ …………… View
│└core/
│
└public/ ……………… 公開ディレクトリ
  ├assets/
  │└{css/, img/, js/}
  └index.php
config の切替 (開発環境、本番環境)
     fuel/app/config/
               • development/ …… 開発環境の設定値
               • production/ ………. 本番                            〃
               • config.php 他 …… 共通の設定値
               - 深い方が優先
               - デフォルトは development                        (via fuel/app/bootstrap.php)

               - production に切替:
                                                                 .htaccess
                              SetEnv FUEL_ENV production


参考: http://docs.fuelphp.com/general/environments.html
MVC
MVC モデル

     ソフトウェアを次の 3 つの構造に分割する手法
           – Model
                  • データの入出力

           – View                                           Controller
                  • データの表示

           – Controller                              View                Model
                  • Model と View の制御           HTM
                                                L

                  • ユーザの入力に応答                                     File
                                                                            Database



参考: http://docs.fuelphp.com/general/mvc.html
Controller

     • クラス名は Controller_Hoge
     • URL から呼び出せるメソッドは action_fuga()
     •      ¥Fuel¥core¥         Controller クラスを継承
     • fuel/app/classes/controller/ に配置
                                                  fuel/app/classes/controller/hoge.php
                 class Controller_Hoge extends Controller {
                      :
                    public function action_fuga($arg1, $arg2 = NULL) {
                         :
                        return Response::forge(View::forge('welcome/index'));
                    }
                 }

参考: http://docs.fuelphp.com/general/controllers/base.html
Controller

     URL との対応
              http://example.jp/hoge/public/index.php/ hoge / fuga / piyo
                                                                                  クラス   メソッド   引数




                                                  fuel/app/classes/controller/hoge.php
                 class Controller_Hoge extends Controller {
                      :
                    public function action_fuga($arg1, $arg2 = NULL) {
                         :
                        return Response::forge(View::forge('welcome/index'));
                    }
                 }

参考: http://docs.fuelphp.com/general/controllers/base.html#/what_is_a_controller
Controller の返り値

     Controller は必ず、次のいずれかを返す
                • Response オブジェクト
                • 文字列、文字列にキャスト可能なオブジェクト
                      •      e.g.) View

                                                   fuel/app/classes/controller/hoge.php
                  class Controller_Hoge extends Controller {
                       :
                     public function action_fuga($arg1, $arg2 = NULL) {
                          :
                         return Response::forge(View::forge('welcome/index'));
                     }
                  }                                               return した内容が
                                                                 ブラウザに表示される
参考: http://docs.fuelphp.com/general/controllers/base.html#/returning_results
“文字列にキャスト可能” ?

     “__toString()” メソッドを持つオブジェクト
                    <?php
                    class TestClass {
                       public $foo;

                        public function __construct($foo) {
                          $this->foo = $foo;
                        }

                        public function __toString() {
                          return $this->foo;
                        }
                    }

                    $class = new TestClass('Hello');
                    echo $class; // 'Hello'
参考: http://www.php.net/manual/ja/language.oop5.magic.php#object.tostring
Response オブジェクト

     ブラウザへの応答を制御
                forge() で生成:

           Response::forge($body = null, $status = 200, $headers = array())


                • $body: 本文 (string)
                • $status: HTTP ステータスコード
                • $headers: HTTP ヘッダ



参考: http://docs.fuelphp.com/classes/response.html
Controller::before(), after()

     before()
                • コンストラクタのようなもの
                • action_*() の前に実行される
                • URL で指定された action_*() が存在しなくても
                  実行される
     after($response)
                • action_*() の後に実行される
                • URL で指定された action_*() が存在しないと
                  実行さない
参考: http://docs.fuelphp.com/general/controllers/base.html#/special_methods
View

     • 基本は HTML
     • fuel/app/views/ に配置
     • Controller から View::forge() で呼出し

                    View::forge('ファイル名' [, View 変数])


               e.g.)               fuel/app/views/ hoge / fuga.php

                                                 ↑
                                     View::forge('hoge / fuga')

参考: http://docs.fuelphp.com/general/views.html
View: 変数

     Controller で値をセット
               • View::forge() の第2引数
                        $data = array('name' => 'sho');
                        return $view->forge('hoge', $data);

               • View::set()
                         $view = View::forge('hoge');
                         $view->set('name', 'sho'); // or $view->name = 'sho'
                         return $view;


     View で出力 (※自動で HTML エスケープ)
                        <?php echo $name; ?>

参考: http://docs.fuelphp.com/general/views.html
View: src=“〜”, href=“〜” の path
     • Asset::css(), js(), img(), Html::anchor()
          <?php echo Asset::css('bootstrap.css'); ?>
                                               ↓
          <link type="text/css" rel="stylesheet"
          href="http://example.jp/fuel/public/assets/css/bootstrap.css?1341579
          959" />


     • Uri::base(false)
                index.php までの URL を返す
          <a href=“<?php echo Uri::base(false); ?>welcome/hello”>…

参考: http://docs.fuelphp.com/classes/uri.html
Model

     • クラス名は Model_Hoge
     •     ¥Fuel¥core¥         Model クラスを継承
     • fuel/app/classes/model/ に配置
     • Controller から new で生成                           (ロード不要)

                     $hoge = new Model_Hoge();



     基底クラスの定義:
                                                  fuel/core/classes/model.php
                     class Model {}
参考: http://docs.fuelphp.com/general/models.html
Query Builder

     SQL クエリを生成
                e.g.)
                    $query = DB::select()
                             ->from('members')
                             ->where('member_id', '>=', 2)
                             ->order_by('member_id', 'asc');

                    $result = $query->execute()->as_array();

                                                       ↓
                   SELECT * FROM `members` WHERE `member_id` >= 2
                   ORDER BY `member_id` ASC;

参考: http://docs.fuelphp.com/classes/database/qb.html
Model_Crud

     DB の CRUD 操作を行うメソッドが予め実装

                 find_by_pk()                  主キーを指定して一行取得
                 find_all()                    全行取得
                 find()                        条件に一致する行を全行取得
                 save()                        保存 (update / insert)
                 delete()                      削除
                    :




参考: http://docs.fuelphp.com/classes/model_crud/methods.html
Model_Crud: 使用例

                                                                          members テーブル
                  member_id                          int(), PK, AI
                  name                               varchar(20)
                  votes                              int()


     Model の定義
                                                         fuel/core/classes/model/member.php
                    class Model_Member extends Model_Crud {
                       protected static $_table_name = 'members';
                       protected static $_primary_key = 'member_id';
                    }


参考: http://docs.fuelphp.com/classes/model_crud/introduction.html
Model_Crud: 使用例

e.g.) データ挿入
                         fuel/core/classes/controller/akb.php
    $member = new Model_Member();
    $member->name = '大島 優子';
    $member->votes = 108837;
    $member->save();

    $member = new Model_Member(); // 新しい行
    $member->name = '渡辺 麻友';
    $member->votes = 72574;
    $member->save();

           member_id    name         votes
                       1 大島 優子         108,837
                       2 渡辺 麻友          72,574
Model_Crud: 使用例

e.g.) データ更新
                            fuel/core/classes/controller/akb.php
    $member = Model_Member::find_by_pk(13);
    $member->votes += 100000;
    $member->save();


   id name       votes              id name          votes
   1 大島 優子        108,837            1 大島 優子          108,837
   2 渡辺 麻友         72,574            2 渡辺 麻友            72,574
             :
                            →                    :
   13 北原 里英        26,531           13 北原 里英          126,531
             :                                   :
便利な機能
様々なライブラリ
Validation Class
    • ユーザ入力の正当性を検証
    • @wakuworks さんのセッションに期待!
Security Class
    • CSRF 対策など
Pagination Class
    • ページ送り
                                etc.
Profiling

     実行結果を分析して表示
                                                     fuel/app/config/config.php
                    'profiling' => true,




参考: http://docs.fuelphp.com/general/profiling.html
Controller_Rest クラス

     RESTful のサポート
                • Controller_Rest クラスを継承
                • HTTP メソッドによって切替
                      •      GET,POST,PUT,DELETE
                          function <HTTP メソッド名>_<アクション名>()

                • 指定されたフォーマットで出力
                      •      xml, json, csv, html, php, serialize
                          http://〜/〜/<コントローラ名>.<フォーマット>


参考: http://docs.fuelphp.com/general/controllers/rest.html
Controller_Rest クラス
                                     fuel/app/classes/controller/test.php
e.g.)
        class Controller_Test extends Controller_Rest {
           public function get_member($member_id) {
             $this->response(array(
                 'member_id' => 13,
                 'name' => '北原 里英',
                 'votes' => 26531
             ));
           }
        }

                                   ↓
                           http://example.jp/fuel/public/ test/member/13.json
        {"member_id":13,"name":"¥u5317¥u539f
        ¥u91cc¥u82f1","votes":26531}
参考情報

FuelPHP まとめ Wiki
       http://fuelphp.phpfogapp.com/wiki/

参考書籍
次回予告?

だれかやってください!
  • oil
  • Orm¥Model
  • auth
おわり

More Related Content

What's hot

10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoyakenjis
 
Fuel php osc tokyo2012
Fuel php osc tokyo2012Fuel php osc tokyo2012
Fuel php osc tokyo2012Fumito Mizuno
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜Sotaro Omura
 
NetBeansではじめる FuelPHP
NetBeansではじめる FuelPHPNetBeansではじめる FuelPHP
NetBeansではじめる FuelPHPJunichi Yamamoto
 
FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード kenjis
 
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月suno88
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )hiro345
 
PHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件についてPHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件について健治郎 安井
 
10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoya10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoyakenjis
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4ichikaway
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014Rui Hirokawa
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUpKenichi Mukai
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目龍一 田中
 
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyGood Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyYuya Takeyama
 

What's hot (20)

10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 
Fuel php osc tokyo2012
Fuel php osc tokyo2012Fuel php osc tokyo2012
Fuel php osc tokyo2012
 
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
 
NetBeansではじめる FuelPHP
NetBeansではじめる FuelPHPNetBeansではじめる FuelPHP
NetBeansではじめる FuelPHP
 
FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード
 
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
 
PHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件についてPHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件について
 
Fuelphp1.8を始めたい
Fuelphp1.8を始めたいFuelphp1.8を始めたい
Fuelphp1.8を始めたい
 
Osc2014
Osc2014Osc2014
Osc2014
 
10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoya10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoya
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
あらためてPHP5.3
あらためてPHP5.3あらためてPHP5.3
あらためてPHP5.3
 
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUp
 
PHP勉強会 #51
PHP勉強会 #51PHP勉強会 #51
PHP勉強会 #51
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目
 
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyGood Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX Philosophy
 

Viewers also liked

Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話Keishi Hosoba
 
Composerを利用した FuelPHPのパッケージ管理方法
Composerを利用した FuelPHPのパッケージ管理方法Composerを利用した FuelPHPのパッケージ管理方法
Composerを利用した FuelPHPのパッケージ管理方法nasneg
 
FuelPHP + Pagoda Box
FuelPHP + Pagoda BoxFuelPHP + Pagoda Box
FuelPHP + Pagoda BoxSotaro Omura
 
ぺちぱな。 はじまり
ぺちぱな。 はじまりぺちぱな。 はじまり
ぺちぱな。 はじまりRyo Tajima
 
PHPカンファレンス 2012 フレームワークアップデート FuelPHP
PHPカンファレンス 2012 フレームワークアップデート FuelPHPPHPカンファレンス 2012 フレームワークアップデート FuelPHP
PHPカンファレンス 2012 フレームワークアップデート FuelPHPKenichi Mukai
 
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーションFuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーションweb2citizen
 
あにみた!(PHPカンファレンス用資料)
あにみた!(PHPカンファレンス用資料)あにみた!(PHPカンファレンス用資料)
あにみた!(PHPカンファレンス用資料)Hiroyuki Ishiyama
 
Let’s translate FuelPHP docs!
Let’s translate FuelPHP docs!Let’s translate FuelPHP docs!
Let’s translate FuelPHP docs!Sho A
 
CakePHP vs FuelPHP
CakePHP vs FuelPHPCakePHP vs FuelPHP
CakePHP vs FuelPHPSotaro Omura
 
フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成kenjis
 
CakePHP Console Application 拡張Tips
CakePHP Console Application 拡張TipsCakePHP Console Application 拡張Tips
CakePHP Console Application 拡張TipsKenichirou Oyama
 
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...Kousuke Ebihara
 
8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会Yusuke Ando
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室Yusuke Ando
 
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaHidenori Goto
 

Viewers also liked (16)

Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話
 
Composerを利用した FuelPHPのパッケージ管理方法
Composerを利用した FuelPHPのパッケージ管理方法Composerを利用した FuelPHPのパッケージ管理方法
Composerを利用した FuelPHPのパッケージ管理方法
 
FuelPHP + Pagoda Box
FuelPHP + Pagoda BoxFuelPHP + Pagoda Box
FuelPHP + Pagoda Box
 
ぺちぱな。 はじまり
ぺちぱな。 はじまりぺちぱな。 はじまり
ぺちぱな。 はじまり
 
Ospn fuel php
Ospn fuel phpOspn fuel php
Ospn fuel php
 
PHPカンファレンス 2012 フレームワークアップデート FuelPHP
PHPカンファレンス 2012 フレームワークアップデート FuelPHPPHPカンファレンス 2012 フレームワークアップデート FuelPHP
PHPカンファレンス 2012 フレームワークアップデート FuelPHP
 
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーションFuel php勉強会東京vol2 発表資料_モデル間リレーション
Fuel php勉強会東京vol2 発表資料_モデル間リレーション
 
あにみた!(PHPカンファレンス用資料)
あにみた!(PHPカンファレンス用資料)あにみた!(PHPカンファレンス用資料)
あにみた!(PHPカンファレンス用資料)
 
Let’s translate FuelPHP docs!
Let’s translate FuelPHP docs!Let’s translate FuelPHP docs!
Let’s translate FuelPHP docs!
 
CakePHP vs FuelPHP
CakePHP vs FuelPHPCakePHP vs FuelPHP
CakePHP vs FuelPHP
 
フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成フレームワーク入門書の決定版が完成
フレームワーク入門書の決定版が完成
 
CakePHP Console Application 拡張Tips
CakePHP Console Application 拡張TipsCakePHP Console Application 拡張Tips
CakePHP Console Application 拡張Tips
 
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
 
8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室
 
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
 

Similar to はじめての FuelPHP

Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarSotaro Karasawa
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義ria1201
 
Ruby on Rails Tutorial
Ruby on Rails TutorialRuby on Rails Tutorial
Ruby on Rails TutorialKen Iiboshi
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01Yusuke Ando
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門Hiroaki Murayama
 
CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100ichikaway
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)Rui Hirokawa
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniterYuya Matsushima
 
FuelPHPでSentry導入
FuelPHPでSentry導入FuelPHPでSentry導入
FuelPHPでSentry導入fagai
 
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925龍一 田中
 
Php5 4勉強会
Php5 4勉強会Php5 4勉強会
Php5 4勉強会Yuji Otani
 
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー<第1回>Laravelハンズオンセミナー
<第1回>LaravelハンズオンセミナーTatsuyoshi Mashiko
 
Php in ruby
Php in rubyPhp in ruby
Php in rubydo_aki
 
Go言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springGo言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springTakuya Ueda
 
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみたYuki Takei
 
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasiaモダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia鉄次 尾形
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented featuretamtam180
 
LaravelでAPI定義を管理する
LaravelでAPI定義を管理するLaravelでAPI定義を管理する
LaravelでAPI定義を管理するKenjiro Kubota
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!Shohei Okada
 

Similar to はじめての FuelPHP (20)

Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
 
Ruby on Rails Tutorial
Ruby on Rails TutorialRuby on Rails Tutorial
Ruby on Rails Tutorial
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門
 
CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
 
FuelPHPでSentry導入
FuelPHPでSentry導入FuelPHPでSentry導入
FuelPHPでSentry導入
 
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925
 
Php5 4勉強会
Php5 4勉強会Php5 4勉強会
Php5 4勉強会
 
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
 
Php in ruby
Php in rubyPhp in ruby
Php in ruby
 
Go言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springGo言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 spring
 
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
 
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasiaモダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented feature
 
LaravelでAPI定義を管理する
LaravelでAPI定義を管理するLaravelでAPI定義を管理する
LaravelでAPI定義を管理する
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 

More from Sho A

HTTP入門
HTTP入門HTTP入門
HTTP入門Sho A
 
ドメイン名入門
ドメイン名入門ドメイン名入門
ドメイン名入門Sho A
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
DNS 入門
DNS 入門DNS 入門
DNS 入門Sho A
 
Unix コマンド入門
Unix コマンド入門Unix コマンド入門
Unix コマンド入門Sho A
 
Unix 基礎
Unix 基礎Unix 基礎
Unix 基礎Sho A
 
Let’s translate FuelPHP docs! [RELOADED]
Let’s translate FuelPHP docs! [RELOADED]Let’s translate FuelPHP docs! [RELOADED]
Let’s translate FuelPHP docs! [RELOADED]Sho A
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門Sho A
 

More from Sho A (8)

HTTP入門
HTTP入門HTTP入門
HTTP入門
 
ドメイン名入門
ドメイン名入門ドメイン名入門
ドメイン名入門
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
DNS 入門
DNS 入門DNS 入門
DNS 入門
 
Unix コマンド入門
Unix コマンド入門Unix コマンド入門
Unix コマンド入門
 
Unix 基礎
Unix 基礎Unix 基礎
Unix 基礎
 
Let’s translate FuelPHP docs! [RELOADED]
Let’s translate FuelPHP docs! [RELOADED]Let’s translate FuelPHP docs! [RELOADED]
Let’s translate FuelPHP docs! [RELOADED]
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 

Recently uploaded

情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイントonozaty
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfTakayuki Nakayama
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルCRI Japan, Inc.
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルCRI Japan, Inc.
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。iPride Co., Ltd.
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperleger Tokyo Meetup
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdkokinagano2
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用KLab Inc. / Tech
 

Recently uploaded (8)

情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 

はじめての FuelPHP

  • 1. はじめての FuelPHP Jul. 8, 2012 FuelPHP 勉強会 東京 sho <sho@codeigniter.jp>
  • 2. 本発表の主な対象者 PHP で Web アプリをつくったことがある && フレームワークを使ってみたい
  • 3. もくじ • FuelPHP とは • インストール • MVC • 便利な機能 • 参考情報
  • 6. FuelPHP とは オープンソースの PHP (>=5.3) フレームワーク MIT License (*1) • 無償で無制限に扱って良い (ソースコードの公開義務なし) • 著作権表示、許諾表示をソフトウェアのすべての複製 または重要な部分に記載しなければならない • 作者はソフトウェアに関してなんら責任を負わない 2011年 7月に登場 CodeIgniter ライク *1 参考: http://ja.wikipedia.org/wiki/MIT_License
  • 7. 特徴 AN (H)MVC FRAMEWORK • MVC モデルに準拠 MODULAR AND EXTENDABLE TO A FAULT • 気に入らない部分は拡張可能 参考: http://fuelphp.com/features
  • 8. 特徴 SECURITY • XSS、CSRF、SQL インジェクションの対策 etc. OIL: THE POWER OF THE COMMAND LINE • 強力なコマンドライン (使わなくても良い) • コードの生成、DB マイグレーション、 デバッグ etc.
  • 9. 特徴 BASE CLASSES FOR CONTROLLERS AND MODELS • 高機能な基底クラス • Controller_Rest, Model_Crud etc. POWERFUL YET LIGHTWEIGHT ORM INCLUDED • 強力な OR マッパ • CRUD (Create / Read/ Update / Delete) • belongs-to, has-one, has-many, many-many
  • 10. 特徴 AUTHENTIFICATION FRAMEWORK • 認証機能を簡単に実装可能 USE ANY TEMPLATE PARSER FOR YOUR VIEWS • 様々なテンプレートパーサに対応 • mustache, Markdown, Smarty, Twig, Haml, Jade, Dwoo, PHPTAL
  • 11. Namespace (PHP >= 5.3) クラス、関数、定数の衝突を避ける機能 • namespace <空間名>; <?php 関同 数じ を名 namespace hoge¥fuga; function myFunc() { echo '¥hoge¥fuga' . "¥n"; } 定前 義の namespace hoge¥moge; でク function myFunc() { echo '¥hoge¥moge' . "¥n"; } きラ るス や myFunc(); // ¥hoge¥moge ¥hoge¥fuga¥myFunc(); // ¥hoge¥fuga namespace hoge; fuga¥myFunc(); // ¥hoge¥fuga 参考: http://www.php.net/manual/ja/language.namespaces.definition.php
  • 13. インストール (Mac, Unix) Quick Installation: $ curl get.fuelphp.com/oil | sh $ oil create <ディレクトリ名> 参考: http://get.fuelphp.com/oil の中身 (抜粋) sudo sh -c "curl --silent http://get.fuelphp.com/installer.sh > ${PREFIX}oil” sudo chmod +x ${PREFIX}oil 参考: http://get.fuelphp.com/installer.sh の中身 (抜粋) git clone --recursive git://github.com/fuel/fuel.git "./$2" php "./$2/oil" refine install 参考: http://docs.fuelphp.com/
  • 14. ディレクトリ構成 (の一部) / ├fuel/ │├app/ ││├classes/ │││├controller/ … Controller │││└model/ ……… Model ││├config/ ………… 設定ファイル ││└view/ …………… View │└core/ │ └public/ ……………… 公開ディレクトリ ├assets/ │└{css/, img/, js/} └index.php
  • 15. config の切替 (開発環境、本番環境) fuel/app/config/ • development/ …… 開発環境の設定値 • production/ ………. 本番 〃 • config.php 他 …… 共通の設定値 - 深い方が優先 - デフォルトは development (via fuel/app/bootstrap.php) - production に切替: .htaccess SetEnv FUEL_ENV production 参考: http://docs.fuelphp.com/general/environments.html
  • 16. MVC
  • 17. MVC モデル ソフトウェアを次の 3 つの構造に分割する手法 – Model • データの入出力 – View Controller • データの表示 – Controller View Model • Model と View の制御 HTM L • ユーザの入力に応答 File Database 参考: http://docs.fuelphp.com/general/mvc.html
  • 18. Controller • クラス名は Controller_Hoge • URL から呼び出せるメソッドは action_fuga() • ¥Fuel¥core¥ Controller クラスを継承 • fuel/app/classes/controller/ に配置 fuel/app/classes/controller/hoge.php class Controller_Hoge extends Controller { : public function action_fuga($arg1, $arg2 = NULL) { : return Response::forge(View::forge('welcome/index')); } } 参考: http://docs.fuelphp.com/general/controllers/base.html
  • 19. Controller URL との対応 http://example.jp/hoge/public/index.php/ hoge / fuga / piyo クラス メソッド 引数 fuel/app/classes/controller/hoge.php class Controller_Hoge extends Controller { : public function action_fuga($arg1, $arg2 = NULL) { : return Response::forge(View::forge('welcome/index')); } } 参考: http://docs.fuelphp.com/general/controllers/base.html#/what_is_a_controller
  • 20. Controller の返り値 Controller は必ず、次のいずれかを返す • Response オブジェクト • 文字列、文字列にキャスト可能なオブジェクト • e.g.) View fuel/app/classes/controller/hoge.php class Controller_Hoge extends Controller { : public function action_fuga($arg1, $arg2 = NULL) { : return Response::forge(View::forge('welcome/index')); } } return した内容が ブラウザに表示される 参考: http://docs.fuelphp.com/general/controllers/base.html#/returning_results
  • 21. “文字列にキャスト可能” ? “__toString()” メソッドを持つオブジェクト <?php class TestClass { public $foo; public function __construct($foo) { $this->foo = $foo; } public function __toString() { return $this->foo; } } $class = new TestClass('Hello'); echo $class; // 'Hello' 参考: http://www.php.net/manual/ja/language.oop5.magic.php#object.tostring
  • 22. Response オブジェクト ブラウザへの応答を制御 forge() で生成: Response::forge($body = null, $status = 200, $headers = array()) • $body: 本文 (string) • $status: HTTP ステータスコード • $headers: HTTP ヘッダ 参考: http://docs.fuelphp.com/classes/response.html
  • 23. Controller::before(), after() before() • コンストラクタのようなもの • action_*() の前に実行される • URL で指定された action_*() が存在しなくても 実行される after($response) • action_*() の後に実行される • URL で指定された action_*() が存在しないと 実行さない 参考: http://docs.fuelphp.com/general/controllers/base.html#/special_methods
  • 24. View • 基本は HTML • fuel/app/views/ に配置 • Controller から View::forge() で呼出し View::forge('ファイル名' [, View 変数]) e.g.) fuel/app/views/ hoge / fuga.php ↑ View::forge('hoge / fuga') 参考: http://docs.fuelphp.com/general/views.html
  • 25. View: 変数 Controller で値をセット • View::forge() の第2引数 $data = array('name' => 'sho'); return $view->forge('hoge', $data); • View::set() $view = View::forge('hoge'); $view->set('name', 'sho'); // or $view->name = 'sho' return $view; View で出力 (※自動で HTML エスケープ) <?php echo $name; ?> 参考: http://docs.fuelphp.com/general/views.html
  • 26. View: src=“〜”, href=“〜” の path • Asset::css(), js(), img(), Html::anchor() <?php echo Asset::css('bootstrap.css'); ?> ↓ <link type="text/css" rel="stylesheet" href="http://example.jp/fuel/public/assets/css/bootstrap.css?1341579 959" /> • Uri::base(false) index.php までの URL を返す <a href=“<?php echo Uri::base(false); ?>welcome/hello”>… 参考: http://docs.fuelphp.com/classes/uri.html
  • 27. Model • クラス名は Model_Hoge • ¥Fuel¥core¥ Model クラスを継承 • fuel/app/classes/model/ に配置 • Controller から new で生成 (ロード不要) $hoge = new Model_Hoge(); 基底クラスの定義: fuel/core/classes/model.php class Model {} 参考: http://docs.fuelphp.com/general/models.html
  • 28. Query Builder SQL クエリを生成 e.g.) $query = DB::select() ->from('members') ->where('member_id', '>=', 2) ->order_by('member_id', 'asc'); $result = $query->execute()->as_array(); ↓ SELECT * FROM `members` WHERE `member_id` >= 2 ORDER BY `member_id` ASC; 参考: http://docs.fuelphp.com/classes/database/qb.html
  • 29. Model_Crud DB の CRUD 操作を行うメソッドが予め実装 find_by_pk() 主キーを指定して一行取得 find_all() 全行取得 find() 条件に一致する行を全行取得 save() 保存 (update / insert) delete() 削除 : 参考: http://docs.fuelphp.com/classes/model_crud/methods.html
  • 30. Model_Crud: 使用例 members テーブル member_id int(), PK, AI name varchar(20) votes int() Model の定義 fuel/core/classes/model/member.php class Model_Member extends Model_Crud { protected static $_table_name = 'members'; protected static $_primary_key = 'member_id'; } 参考: http://docs.fuelphp.com/classes/model_crud/introduction.html
  • 31. Model_Crud: 使用例 e.g.) データ挿入 fuel/core/classes/controller/akb.php $member = new Model_Member(); $member->name = '大島 優子'; $member->votes = 108837; $member->save(); $member = new Model_Member(); // 新しい行 $member->name = '渡辺 麻友'; $member->votes = 72574; $member->save(); member_id name votes 1 大島 優子 108,837 2 渡辺 麻友 72,574
  • 32. Model_Crud: 使用例 e.g.) データ更新 fuel/core/classes/controller/akb.php $member = Model_Member::find_by_pk(13); $member->votes += 100000; $member->save(); id name votes id name votes 1 大島 優子 108,837 1 大島 優子 108,837 2 渡辺 麻友 72,574 2 渡辺 麻友 72,574 : → : 13 北原 里英 26,531 13 北原 里英 126,531 : :
  • 34. 様々なライブラリ Validation Class • ユーザ入力の正当性を検証 • @wakuworks さんのセッションに期待! Security Class • CSRF 対策など Pagination Class • ページ送り etc.
  • 35. Profiling 実行結果を分析して表示 fuel/app/config/config.php 'profiling' => true, 参考: http://docs.fuelphp.com/general/profiling.html
  • 36. Controller_Rest クラス RESTful のサポート • Controller_Rest クラスを継承 • HTTP メソッドによって切替 • GET,POST,PUT,DELETE function <HTTP メソッド名>_<アクション名>() • 指定されたフォーマットで出力 • xml, json, csv, html, php, serialize http://〜/〜/<コントローラ名>.<フォーマット> 参考: http://docs.fuelphp.com/general/controllers/rest.html
  • 37. Controller_Rest クラス fuel/app/classes/controller/test.php e.g.) class Controller_Test extends Controller_Rest { public function get_member($member_id) { $this->response(array( 'member_id' => 13, 'name' => '北原 里英', 'votes' => 26531 )); } } ↓ http://example.jp/fuel/public/ test/member/13.json {"member_id":13,"name":"¥u5317¥u539f ¥u91cc¥u82f1","votes":26531}
  • 38. 参考情報 FuelPHP まとめ Wiki http://fuelphp.phpfogapp.com/wiki/ 参考書籍