Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

FuelPHPをさわってみて

47,273 views

Published on

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

Published in: Technology
  • Sex in your area is here: ❶❶❶ http://bit.ly/369VOVb ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ❤❤❤ http://bit.ly/369VOVb ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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. ありがとうございました

×