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

10,012 views

Published on

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

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

No Downloads
Views
Total views
10,012
On SlideShare
0
From Embeds
0
Number of Embeds
4,897
Actions
Shares
0
Downloads
27
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

第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 />

×