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.

第4回Symfony2勉強会 基礎編ワークショップ.0

11,841 views

Published on

第4回Symfony2勉強会 基礎編ワークショップで使用したスライドです。Symfony2の概要を説明しています。

Published in: Technology
  • Be the first to comment

第4回Symfony2勉強会 基礎編ワークショップ.0

  1. 1. 会場注意<br />Symfony2が動く環境を急いで整えてください!<br />会場無線LANが使えません<br />野良無線の提供をしていただける方が居ましたら、<br />前方ホワイトボードにアイパス設定を書いてください<br />ご協力お願いしますm(_ _)m<br />トイレに行くにはカードキーが必要になります<br />スタッフにお申し付けください<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />1<br />
  2. 2. Symfony2勉強会#4基礎編ワークショップ.0<br />2011.06.04<br />上野裕介<br />
  3. 3. まずは…環境整備<br />Standard Editionのダウンロード<br />解凍・配置<br />config.php<br />app_dev.phpの確認<br />2011.06.04<br />3<br />Symfony2勉強会#4 基礎編ワークショップ<br />
  4. 4. 1.Standard Editionのダウンロード<br />http://symfony.com/download<br />Symfony2 Standard Edition BETA 3<br />vendors一式が同梱済み<br />環境<br />php 5.3.2以上<br />2011.06.04<br />4<br />Symfony2勉強会#4 基礎編ワークショップ<br />
  5. 5. 2. 解凍・配置<br />Webサーバで閲覧できる場所に解凍・配置<br />(VirtualHost、hostsを設定)<br /><VirtualHost *:80><br />ServerAdminwebmaster@localhost<br />DocumentRoot "/Users/uechoco/dev/php_works/sf2b3/web"<br />ServerName sf2b3.localhost<br /> <Directory /><br /> Order deny,allow<br /> Deny from all<br /> Allow from 127.0.0.1<br />AllowOverride all<br /> Options all<br />DirectoryIndexapp.phpindex.htmlindex.htm<br /> </Directory><br /></VirtualHost><br />2011.06.04<br />5<br />Symfony2勉強会#4 基礎編ワークショップ<br />
  6. 6. 3. config.php<br />動作確認の単体php<br />たぶん問題が2つ起きるので、以下のコマンド<br />sudochmod -R 777 app/cache/ app/logs/<br />2011.06.04<br />6<br />Symfony2勉強会#4 基礎編ワークショップ<br />
  7. 7. 4. app_dev.phpの確認<br />app_dev.phpが見れます!<br />[RUN THE DEMO]でhello, Worldが見れます<br />2011.06.04<br />7<br />Symfony2勉強会#4 基礎編ワークショップ<br />
  8. 8. 自己紹介<br />上野裕介(@uechoco)<br />有限会社スグエ - エンジニア<br />社会人2年目<br />現在CakePHP使い<br />元symfony 1.x使い<br />キイロイトリ好き!!<br />2011.06.04<br />8<br />Symfony2勉強会#4 基礎編ワークショップ<br />
  9. 9. キイロイトリグッズたち<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />9<br />
  10. 10. 今回<br />Symfony2勉強会第1部<br />概要(30min)<br />ワークショップ(1hour)<br />2011.06.04<br />10<br />Symfony2勉強会#4 基礎編ワークショップ<br />
  11. 11. Symfony2とは<br />symfony 1.xとは全く別物<br />アップグレードはありません<br />php 5.3.2以降<br />名前空間<br />DIコンテナ<br />遅延読み込み(lazy load)<br />バンドル<br />Doctrine2<br />Twig<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />11<br />
  12. 12. Symfony2を使う6つの技術的な利点<br />Faster and less greedy<br />Unlimited Flexibility<br />Expandable<br />Stable and sustainable<br />The joy of developing<br />Ease of use<br />出典:The technological benefits of Symfony in 6 easy lessons<br />http://symfony.com/six-good-technical-reasons<br />2011.06.04<br />12<br />Symfony2勉強会#4 基礎編ワークショップ<br />Symfony2 はsymfony 1.4 より3 倍速い<br />メモリの使用量は半分<br />
  13. 13. Symfony2の現状<br />本当は2011/3/5に正式リリース予定だった<br />ちょうど3ヶ月経ちました<br />Symfony2 Beta3<br />リリースはいつ?<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />13<br />
  14. 14. ワークショップの前に解説するもの<br />名前空間<br />DI<br />Symfony2の処理フロー<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />14<br />
  15. 15. 名前空間(1 of 4)<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />15<br /><?php<br />namespace HTTPClient;<br />useHTTPMessageRequest;<br />interfaceClientInterface<br />{<br /> /**<br /> * Sends a request.<br /> */<br />functionsend(Request $request);<br />}<br />HTTPMessageRequest<br />HTTPClientRequest<br />
  16. 16. 名前空間(2 of 4)<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />16<br /><?php<br />namespace HTTPClient;<br />useHTTPMessageRequest asHttpRequest;<br />interfaceClientInterface<br />{<br /> /**<br /> * Sends a request.<br /> */<br />functionsend(HttpRequest $request);<br />}<br />
  17. 17. 名前空間(3 of 4)<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />17<br /><?php<br />namespace HTTPClient;<br />useHTTPMessage;<br />interfaceClientInterface<br />{<br /> /**<br /> * Sends a request.<br /> */<br />functionsend(MessageRequest $request);<br />}<br />
  18. 18. 名前空間(4 of 4)<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />18<br /><?php<br />namespace HTTPClient;<br />interfaceClientInterface<br />{<br /> /**<br /> * Sends a request.<br /> */<br />functionsend(sfWebRequest $request);<br />}<br />
  19. 19. DI(1 of 4)<br />Dependency Injection(依存性の注入)<br />Javaでよく使われていたデザインパターンの1つ<br />DIコンテナ=依存性を注入する入れ物<br />(外部の設定ファイルを読み込んで)<br />(実行時に)<br />依存性を注入<br />(インスタンスや設定値を管理)<br />Symfony2の内部を理解するには必須<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />19<br />
  20. 20. DI(2 of 4)<br />依存しているコード<br />UserクラスがSessionStorageクラスに依存している(設定を変えようにもテストしようにも面倒)<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />20<br /><?php<br />class User<br />{<br />protected $storage;<br />function __construct()<br /> {<br /> $this->storage = new SessionStorage(‘SESSION_ID’);<br /> }<br />}<br />クラス名が<br />ハードコーディング<br />設定値が<br />ハードコーディング<br />
  21. 21. DI(3 of 4)<br />設定変更、SessionStorageクラスの置き換え、がUserクラスに変更を加えずにできる<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />21<br /><?php<br />class User<br />{<br />protected $storage;<br />function __construct($storage)<br /> {<br /> $this->strorage = $storage;<br /> }<br />}<br />$storage = new SessionStorage('SESSION_ID');<br />$user = new User($storage);<br />
  22. 22. DI(4 of 4)<br />DI(コンテナ)のメリット<br />Lazy load<br />(今まで比べて)速度向上<br />テストしやすい<br />拡張しやすい<br />FabienさんのDI(コンテナ)に関する全6回の記事<br />http://fabien.potencier.org/article/11/what-is-dependency-injection<br />Dependency InjectionはPHP5.3になってどう変わったか?<br />chobi_eさんがまだニートだった頃の記事<br />http://d.hatena.ne.jp/chobi_e/20101102/1288677784<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />22<br />
  23. 23. Symfony2の処理フロー(1 of 3)<br />Webページを表示する<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />23<br />リクエスト<br />レスポンス<br />
  24. 24. Symfony2の処理フロー(2 of 3)<br />Symfony2<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />24<br />Symfony2<br />リクエスト<br />Request<br />内部処理<br />レスポンス<br />Response<br />
  25. 25. Symfony2の処理フロー(3 of 3)<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />25<br />Symfony2<br />Request<br />内部処理=Kernel<br />URIのマッチング<br />Controller<br />addAction<br />Response<br />
  26. 26. 以降はワークショップです!<br />2011.06.04<br />Symfony2勉強会#4 基礎編ワークショップ<br />26<br />

×