• Save
FuelPHPをさわってみて
Upcoming SlideShare
Loading in...5
×
 

FuelPHPをさわってみて

on

  • 40,214 views

「PHPカンファレンス関西2012」発表資料

「PHPカンファレンス関西2012」発表資料

Statistics

Views

Total Views
40,214
Views on SlideShare
20,685
Embed Views
19,529

Actions

Likes
41
Downloads
19
Comments
0

36 Embeds 19,529

http://d.hatena.ne.jp 11659
http://blog.omoon.org 4660
http://conference.kphpug.jp 1318
http://masutaka.net 1115
http://omoon.tap.vmware 247
http://localhost 155
http://docs.is0.me 70
https://twitter.com 62
http://ss.dotbranch.com 51
http://webcache.googleusercontent.com 39
http://s.deeeki.com 23
http://default-environment-hpu36vfez8.elasticbeanstalk.com 22
https://si0.twimg.com 19
http://asklife.info 17
https://twimg0-a.akamaihd.net 12
http://tweetedtimes.com 9
http://www.techgig.com 9
http://us-w1.rockmelt.com 6
http://sc.dotbranch.com 5
http://192.168.2.130 4
http://10.211.55.6 4
http://192.168.109.129 2
http://192.168.245.164 2
http://translate.googleusercontent.com 2
https://www.google.co.jp 2
http://a0.twimg.com 2
http://www.ezo-style.com 2
http://omoon-blog.pagodabox.com 2
http://nuevospowerpoints.blogspot.com.es 2
http://sandbox.is0.me 1
http://115.112.206.131 1
http://cc.bingj.com 1
http://nuevospowerpoints.blogspot.com.ar 1
http://www.tumblr.com 1
http://clipboard.com 1
http://twitter.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

FuelPHPをさわってみて FuelPHPをさわってみて Presentation Transcript

  • PHPカンファレンス関西2012FuelPHPをさわってみて大村創太郎2012/5/12
  • 自己紹介
  • •大村創太郎
  • •大村創太郎•大阪府池田市出身・在住
  • •大村創太郎•大阪府池田市出身・在住•株式会社タップ
  • •大村創太郎•大阪府池田市出身・在住•株式会社タップ•PHPは10年ぐらい
  • •omoon
  • •omoon
  • •今日のスタッフです
  • ただの利用者です
  • ここ数ヶ月合間をみてちょこちょこ
  • 個人的に1つ
  • 業務で2つ
  • とても楽しい
  • 今日はそういうはなしをします
  • 僕のフレームワーク遍歴
  • Symfony 1.x
  • myopenarchive.org
  • 主にデザイン担当
  • cakePHP 1.x
  • 社内のお遊びアプリ
  • 挫折したため画像なし
  • 業務では
  • 社内独自フレームワーク
  • オレオレフレームワーク
  • ぼくがかんがえたさいきょうの ふれーむわーく
  • 作った時は最高だと思う
  • 作っているうちに最低だと思う
  • 2回作り直し
  • 最新版を作る時にSymfony2を参考にした
  • 完全に乗り換えるのは難しかった
  • 先月Symfony2勉強会を開催
  • ちなみに
  • 今日の参加者アンケートはその成果です
  • ご協力よろしくお願いします
  • その準備をしていた2月頃
  • FuelPHPに出会ってしまった
  • 今日するはなし
  • •FuelPHPの素敵な雰囲気
  • •FuelPHPの素敵な雰囲気•インストールからサイト表示まで
  • •FuelPHPの素敵な雰囲気•インストールからサイト表示まで•ちょっとだけソースのはなし
  • 今日しないはなし
  • たくさんあります
  • 近くFuelPHPの入門書が出版されるようです
  • http://d.hatena.ne.jp/Kenji_s/20120425/fuelphp_book_reviewer
  • http://fuelphp-book.phpfogapp.com/notifyme
  • 詳しくはそちらで
  • What is ?
  • FuelPHP is a simple,flexible, community drivenPHP 5.3 web frameworkbased on the best ideas ofother frameworks with afresh start.
  • サイトはなんかおしゃれなのに
  • 出てくる単語がいちいちガテン系
  • fuel
  • fuel = 燃料
  • fuel = 燃料
  • fuel = 燃料
  • oil
  • oil = 油
  • oil = 油
  • oil = 油
  • forge
  • View::forge();Response::forge();
  • forge = 鍛造する
  • forge = 鍛造(たんぞう)する
  • forge = 〈鉄などを〉鍛えて(金属製品に)する
  • forge = 鍛造する
  • forge = 鍛造する
  • forge = 鍛造する
  • ガテン系、でも、なんか洒落てる
  • そんな雰囲気
  • さて、出会いのはなし
  • 衝撃の Quick Installation
  • たったの3行
  • $ curl get.fuelphp.com/oil | sh$ cd Sites/$ oil create blog
  • やってみます(demo)
  • get.fuelphp.com/oilのなかみ
  • #!/bin/bashPREFIX="/usr/bin/"install_oil() { sudo sh -c "curl --silent http://get.fuelphp.com/installer.sh > ${PREFIX}oil" sudo chmod +x ${PREFIX}oil}## Handle execution#main() { # Start installation install_oil exit 0}main
  • get.fuelphp.com/installer.shのなかみ
  • #!/bin/bashif [ -f "./oil" ]; then php oil "$@"else if [ "$1" == "create" ]; then if [ ! `which git` ]; then echo "For this installer to work youll needto install Git." echo http://git-scm.com/ fi git clone --recursive git://github.com/fuel/fuel.git "./$2" php "./$2/oil" refine install else echo This is not a valid Fuel installation so Oilis a bit lost. echo http://fuelphp.com/docs/installation/instructions.html fifi
  • https://github.com/fuel/fuel
  • https://github.com/fuel/fuel
  • そこから git clone
  • で、oil create blog
  • かっこえー
  • ここまでをまとめます
  • なんか今風
  • github
  • twitter bootstrap
  • twitter bootstrap
  • なんか気持ちいい
  • モチベーション維持には非常に重要
  • では、中味をそろそろ
  • ドキュメント
  • ドキュメントついてくる!
  • ドキュメントみてみましょう
  • FuelPHPのcore
  • 公開部分
  • 僕達が書くとこ
  • MVC
  • M
  • V
  • C
  • ここはVじゃない!
  • ViewModel今日は話しません
  • 実は Model のはなしもしません
  • Controller
  • ここに配置
  • class Controller_Welcome extends Controller{ public function action_index() { return Response::forge(View::forge(welcome/index)); }}
  • Controllerのルール
  • • prefixed with "Controller_"
  • • prefixed with "Controller_"• should extend the Controller class
  • • prefixed with "Controller_"• should extend the Controller class• action_
  • • prefixed with "Controller_"• should extend the Controller class• action_• A controller action MUST return a Response object.
  • prefixed with "Controller_"class Controller_Welcome extends Controller{ public function action_index() { return Response::forge(View::forge(welcome/index)); }}
  • should extend the Controller classclass Controller_Welcome extends Controller{ public function action_index() { return Response::forge(View::forge(welcome/index)); }}
  • action_class Controller_Welcome extends Controller{ public function action_index() { return Response::forge(View::forge(welcome/index)); }}
  • A controller action MUST return a Response object.class Controller_Welcome extends Controller{ public function action_index() { return Response::forge(View::forge(welcome/index)); }}
  • URLとの関係
  • http://localhost/blog/public/welcome/index
  • http://localhost/blog/public/welcome/indexclass Controller_Welcome extends Controller{ public function action_index() { return Response::forge(View::forge(welcome/index)); }}
  • http://localhost/blog/public/welcome/helloclass Controller_Welcome extends Controller{ public function action_index() { return Response::forge(View::forge(welcome/index)); } public function action_hello() { return Response::forge( View::forge( welcome/hello, array(name => $this->param(name, World)) ) ); }}
  • http://localhost/blog/public/
  • Routing
  • ここに配置
  • <?phpreturn array( _root_ => welcome/index, // The default route _404_ => welcome/404, // The main 404 route hello(/:name)? => array(welcome/hello),);
  • <?phpreturn array( _root_ => welcome/index, // The default route _404_ => welcome/404, // The main 404 route hello(/:name)? => array(welcome/hello),);
  • http://localhost/blog/public/
  • http://localhost/blog/public/hello/php
  • http://localhost/blog/public/hello/php
  • <?phpreturn array( _root_ => welcome/index, // The default route _404_ => welcome/404, // The main 404 route hello(/:name)? => array(welcome/hello),);
  • http://localhost/blog/public/hello/phpclass Controller_Welcome extends Controller{ public function action_hello() { return Response::forge( View::forge( welcome/hello, array(name => $this->param(name, World)) ) ); }}
  • $this->param( hoge , default )
  • $this->param( hoge , default )
  • http://localhost/blog/public/hello
  • http://localhost/blog/public/hello/phpclass Controller_Welcome extends Controller{ public function action_hello() { return Response::forge( View::forge( welcome/hello, array(name => $this->param(name, World)) ) ); }}
  • View
  • ここに配置
  • ここはVじゃない!
  • ここに配置
  • デフォルトではviewファイルは生のPHP
  • 配置場所によって名前がきまる
  • 例えばこいつ
  • welcome/indexと呼びます
  • で、さきほどの
  • http://localhost/blog/public/hello/php
  • http://localhost/blog/public/hello/php<body> <div id="header"> <div class="row"> <div id="logo"></div> </div> </div> <div class="container"> <div class="row"> <div class="span16"> <h1>Hello, <?php echo $name; ?>! <
  • http://localhost/blog/public/hello/phpclass Controller_Welcome extends Controller{ public function action_hello() { return Response::forge( View::forge( welcome/hello, array(name => $this->param(name, World)) ) ); }}
  • http://localhost/blog/public/hello/php<body> <div id="header"> <div class="row"> <div id="logo"></div> </div> </div> <div class="container"> <div class="row"> <div class="span16"> <h1>Hello, <?php echo $name; ?>! <
  • 値の渡し方
  • 値の渡し方その1$data = array(title => hoge, contents => fuga);return Response::forge(View::forge(welcome/index, $data));
  • 値の渡し方その2$view = View::forge(welcome/index);$view->title = hoge;$view->contents = fuga;return Response::forge($view);
  • 値の渡し方その3$view = View::forge(home/index);$view->set(title, hoge);$view->set(contents, fuga);return Response::forge($view);
  • ページ表示のしくみでした
  • Controller 以外の Controller
  • •Controller
  • •Controller•Controller_Template
  • •Controller•Controller_Template•Controller_Rest
  • •Controller•Controller_Template•Controller_Rest•Controller_Hybrid
  • •Controller•Controller_Template•Controller_Rest•Controller_Hybrid
  • メソッドのprefixでリクエストメソッドを指定
  • http://localhost/test/listにgetclass Controller_Test extends Controller_Rest{ public function get_list() { $this->response(array( foo => Input::get(foo), baz => array( 1, 50, 219 ), empty => null )); }}
  • URL で format を指定
  • test/list.json?foo=php{"foo":"php","baz":[1,50,219],"empty":null}
  • test/list.xml?foo=php<xml><foo>php</foo><baz><item>1</item><item>50</item><item>219</item></baz><empty/></xml>
  • API作成がサクッとできて嬉しい
  • ほかにもいくつか
  • • xml ‒ almost any programming language can read XML• json ‒ useful for JavaScript and increasingly PHP apps.• csv ‒ open with spreadsheet programs• html ‒ a simple HTML table• php ‒ Representation of PHP code that can be eval() ed• serialize ‒ Serialized data that can be unserialized in PHP
  • ざっとこんな感じです
  • その他にもたくさん
  • 柔軟なConfiguration
  • Environment のはなし
  • $ oil test --group=Appみたいなはなし
  • DB / Model / Form /Validation / Fieldset /Auth /Session / Parser
  • ドキュメント
  • ドキュメント翻訳メンバーも募集中のようです
  • ということで、みなさんも
  • fuel = 燃料
  • oil = 油
  • forge = 鍛造する
  • ありがとうございました