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 s...
サイトはなんかおしゃれなのに
出てくる単語がいちいちガテン系
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}o...
get.fuelphp.com/installer.shのなかみ
#!/bin/bashif [ -f "./oil" ]; then        php oil "$@"else        if [ "$1" == "create" ]; then                   if [ ! `...
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::forg...
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 obj...
prefixed with "Controller_"class Controller_Welcome extends Controller{	   public function action_index()	   {	   	 return ...
should extend the Controller classclass Controller_Welcome extends Controller{	   public function action_index()	   {	   	...
action_class Controller_Welcome extends Controller{	   public function action_index()	   {	   	 return Response::forge(Vie...
A controller action MUST return                    a Response object.class Controller_Welcome extends Controller{	   publi...
URLとの関係
http://localhost/blog/public/welcome/index
http://localhost/blog/public/welcome/indexclass Controller_Welcome extends Controller{	   public function action_index()	 ...
http://localhost/blog/public/welcome/helloclass Controller_Welcome extends Controller{	 public function action_index()	 {	...
http://localhost/blog/public/
Routing
ここに配置
<?phpreturn array(	 _root_ => welcome/index, // The default route	 _404_    => welcome/404,   // The main 404 route		 hell...
<?phpreturn array(	 _root_ => welcome/index, // The default route	 _404_    => welcome/404,   // The main 404 route		 hell...
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		 hell...
http://localhost/blog/public/hello/phpclass Controller_Welcome extends Controller{	 public function action_hello()	 {     ...
$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()	 {     ...
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>	...
http://localhost/blog/public/hello/phpclass Controller_Welcome extends Controller{	 public function action_hello()	 {     ...
http://localhost/blog/public/hello/php<body>	 <div id="header">	 	 <div class="row">	 	 	 <div id="logo"></div>	 	 </div>	...
値の渡し方
値の渡し方その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()    {        $th...
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 ‒...
ざっとこんな感じです
その他にもたくさん
柔軟なConfiguration
Environment のはなし
$ oil test --group=Appみたいなはなし
DB / Model / Form /Validation / Fieldset /Auth /Session / Parser
ドキュメント
ドキュメント翻訳メンバーも募集中のようです
ということで、みなさんも
fuel = 燃料
oil = 油
forge = 鍛造する
ありがとうございました
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
FuelPHPをさわってみて
Upcoming SlideShare
Loading in...5
×

FuelPHPをさわってみて

41,309

Published on

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

Published in: Technology
0 Comments
43 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
41,309
On Slideshare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
19
Comments
0
Likes
43
Embeds 0
No embeds

No notes for slide
  • \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
  • Transcript of "FuelPHPをさわってみて"

    1. 1. PHPカンファレンス関西2012FuelPHPをさわってみて大村創太郎2012/5/12
    2. 2. 自己紹介
    3. 3. •大村創太郎
    4. 4. •大村創太郎•大阪府池田市出身・在住
    5. 5. •大村創太郎•大阪府池田市出身・在住•株式会社タップ
    6. 6. •大村創太郎•大阪府池田市出身・在住•株式会社タップ•PHPは10年ぐらい
    7. 7. •omoon
    8. 8. •omoon
    9. 9. •今日のスタッフです
    10. 10. ただの利用者です
    11. 11. ここ数ヶ月合間をみてちょこちょこ
    12. 12. 個人的に1つ
    13. 13. 業務で2つ
    14. 14. とても楽しい
    15. 15. 今日はそういうはなしをします
    16. 16. 僕のフレームワーク遍歴
    17. 17. Symfony 1.x
    18. 18. myopenarchive.org
    19. 19. 主にデザイン担当
    20. 20. cakePHP 1.x
    21. 21. 社内のお遊びアプリ
    22. 22. 挫折したため画像なし
    23. 23. 業務では
    24. 24. 社内独自フレームワーク
    25. 25. オレオレフレームワーク
    26. 26. ぼくがかんがえたさいきょうの ふれーむわーく
    27. 27. 作った時は最高だと思う
    28. 28. 作っているうちに最低だと思う
    29. 29. 2回作り直し
    30. 30. 最新版を作る時にSymfony2を参考にした
    31. 31. 完全に乗り換えるのは難しかった
    32. 32. 先月Symfony2勉強会を開催
    33. 33. ちなみに
    34. 34. 今日の参加者アンケートはその成果です
    35. 35. ご協力よろしくお願いします
    36. 36. その準備をしていた2月頃
    37. 37. FuelPHPに出会ってしまった
    38. 38. 今日するはなし
    39. 39. •FuelPHPの素敵な雰囲気
    40. 40. •FuelPHPの素敵な雰囲気•インストールからサイト表示まで
    41. 41. •FuelPHPの素敵な雰囲気•インストールからサイト表示まで•ちょっとだけソースのはなし
    42. 42. 今日しないはなし
    43. 43. たくさんあります
    44. 44. 近くFuelPHPの入門書が出版されるようです
    45. 45. http://d.hatena.ne.jp/Kenji_s/20120425/fuelphp_book_reviewer
    46. 46. http://fuelphp-book.phpfogapp.com/notifyme
    47. 47. 詳しくはそちらで
    48. 48. What is ?
    49. 49. FuelPHP is a simple,flexible, community drivenPHP 5.3 web frameworkbased on the best ideas ofother frameworks with afresh start.
    50. 50. サイトはなんかおしゃれなのに
    51. 51. 出てくる単語がいちいちガテン系
    52. 52. fuel
    53. 53. fuel = 燃料
    54. 54. fuel = 燃料
    55. 55. fuel = 燃料
    56. 56. oil
    57. 57. oil = 油
    58. 58. oil = 油
    59. 59. oil = 油
    60. 60. forge
    61. 61. View::forge();Response::forge();
    62. 62. forge = 鍛造する
    63. 63. forge = 鍛造(たんぞう)する
    64. 64. forge = 〈鉄などを〉鍛えて(金属製品に)する
    65. 65. forge = 鍛造する
    66. 66. forge = 鍛造する
    67. 67. forge = 鍛造する
    68. 68. ガテン系、でも、なんか洒落てる
    69. 69. そんな雰囲気
    70. 70. さて、出会いのはなし
    71. 71. 衝撃の Quick Installation
    72. 72. たったの3行
    73. 73. $ curl get.fuelphp.com/oil | sh$ cd Sites/$ oil create blog
    74. 74. やってみます(demo)
    75. 75. get.fuelphp.com/oilのなかみ
    76. 76. #!/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
    77. 77. get.fuelphp.com/installer.shのなかみ
    78. 78. #!/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
    79. 79. https://github.com/fuel/fuel
    80. 80. https://github.com/fuel/fuel
    81. 81. そこから git clone
    82. 82. で、oil create blog
    83. 83. かっこえー
    84. 84. ここまでをまとめます
    85. 85. なんか今風
    86. 86. github
    87. 87. twitter bootstrap
    88. 88. twitter bootstrap
    89. 89. なんか気持ちいい
    90. 90. モチベーション維持には非常に重要
    91. 91. では、中味をそろそろ
    92. 92. ドキュメント
    93. 93. ドキュメントついてくる!
    94. 94. ドキュメントみてみましょう
    95. 95. FuelPHPのcore
    96. 96. 公開部分
    97. 97. 僕達が書くとこ
    98. 98. MVC
    99. 99. M
    100. 100. V
    101. 101. C
    102. 102. ここはVじゃない!
    103. 103. ViewModel今日は話しません
    104. 104. 実は Model のはなしもしません
    105. 105. Controller
    106. 106. ここに配置
    107. 107. class Controller_Welcome extends Controller{ public function action_index() { return Response::forge(View::forge(welcome/index)); }}
    108. 108. Controllerのルール
    109. 109. • prefixed with "Controller_"
    110. 110. • prefixed with "Controller_"• should extend the Controller class
    111. 111. • prefixed with "Controller_"• should extend the Controller class• action_
    112. 112. • prefixed with "Controller_"• should extend the Controller class• action_• A controller action MUST return a Response object.
    113. 113. prefixed with "Controller_"class Controller_Welcome extends Controller{ public function action_index() { return Response::forge(View::forge(welcome/index)); }}
    114. 114. should extend the Controller classclass Controller_Welcome extends Controller{ public function action_index() { return Response::forge(View::forge(welcome/index)); }}
    115. 115. action_class Controller_Welcome extends Controller{ public function action_index() { return Response::forge(View::forge(welcome/index)); }}
    116. 116. A controller action MUST return a Response object.class Controller_Welcome extends Controller{ public function action_index() { return Response::forge(View::forge(welcome/index)); }}
    117. 117. URLとの関係
    118. 118. http://localhost/blog/public/welcome/index
    119. 119. http://localhost/blog/public/welcome/indexclass Controller_Welcome extends Controller{ public function action_index() { return Response::forge(View::forge(welcome/index)); }}
    120. 120. 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)) ) ); }}
    121. 121. http://localhost/blog/public/
    122. 122. Routing
    123. 123. ここに配置
    124. 124. <?phpreturn array( _root_ => welcome/index, // The default route _404_ => welcome/404, // The main 404 route hello(/:name)? => array(welcome/hello),);
    125. 125. <?phpreturn array( _root_ => welcome/index, // The default route _404_ => welcome/404, // The main 404 route hello(/:name)? => array(welcome/hello),);
    126. 126. http://localhost/blog/public/
    127. 127. http://localhost/blog/public/hello/php
    128. 128. http://localhost/blog/public/hello/php
    129. 129. <?phpreturn array( _root_ => welcome/index, // The default route _404_ => welcome/404, // The main 404 route hello(/:name)? => array(welcome/hello),);
    130. 130. 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)) ) ); }}
    131. 131. $this->param( hoge , default )
    132. 132. $this->param( hoge , default )
    133. 133. http://localhost/blog/public/hello
    134. 134. 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)) ) ); }}
    135. 135. View
    136. 136. ここに配置
    137. 137. ここはVじゃない!
    138. 138. ここに配置
    139. 139. デフォルトではviewファイルは生のPHP
    140. 140. 配置場所によって名前がきまる
    141. 141. 例えばこいつ
    142. 142. welcome/indexと呼びます
    143. 143. で、さきほどの
    144. 144. http://localhost/blog/public/hello/php
    145. 145. 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; ?>! <
    146. 146. 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)) ) ); }}
    147. 147. 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; ?>! <
    148. 148. 値の渡し方
    149. 149. 値の渡し方その1$data = array(title => hoge, contents => fuga);return Response::forge(View::forge(welcome/index, $data));
    150. 150. 値の渡し方その2$view = View::forge(welcome/index);$view->title = hoge;$view->contents = fuga;return Response::forge($view);
    151. 151. 値の渡し方その3$view = View::forge(home/index);$view->set(title, hoge);$view->set(contents, fuga);return Response::forge($view);
    152. 152. ページ表示のしくみでした
    153. 153. Controller 以外の Controller
    154. 154. •Controller
    155. 155. •Controller•Controller_Template
    156. 156. •Controller•Controller_Template•Controller_Rest
    157. 157. •Controller•Controller_Template•Controller_Rest•Controller_Hybrid
    158. 158. •Controller•Controller_Template•Controller_Rest•Controller_Hybrid
    159. 159. メソッドのprefixでリクエストメソッドを指定
    160. 160. 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 )); }}
    161. 161. URL で format を指定
    162. 162. test/list.json?foo=php{"foo":"php","baz":[1,50,219],"empty":null}
    163. 163. test/list.xml?foo=php<xml><foo>php</foo><baz><item>1</item><item>50</item><item>219</item></baz><empty/></xml>
    164. 164. API作成がサクッとできて嬉しい
    165. 165. ほかにもいくつか
    166. 166. • 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
    167. 167. ざっとこんな感じです
    168. 168. その他にもたくさん
    169. 169. 柔軟なConfiguration
    170. 170. Environment のはなし
    171. 171. $ oil test --group=Appみたいなはなし
    172. 172. DB / Model / Form /Validation / Fieldset /Auth /Session / Parser
    173. 173. ドキュメント
    174. 174. ドキュメント翻訳メンバーも募集中のようです
    175. 175. ということで、みなさんも
    176. 176. fuel = 燃料
    177. 177. oil = 油
    178. 178. forge = 鍛造する
    179. 179. ありがとうございました

    ×