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

Contenu connexe

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

Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaHidenori Goto
 
symfony1.2最新動向 - 第二回symfony勉強会
symfony1.2最新動向 - 第二回symfony勉強会symfony1.2最新動向 - 第二回symfony勉強会
symfony1.2最新動向 - 第二回symfony勉強会tsukimiya
 
Symfony2 intro-20111204
Symfony2 intro-20111204Symfony2 intro-20111204
Symfony2 intro-20111204Hidenori Goto
 
20090415 すばらしきSymfonyの世界へようこそ
20090415 すばらしきSymfonyの世界へようこそ20090415 すばらしきSymfonyの世界へようこそ
20090415 すばらしきSymfonyの世界へようこそHiromu Shioya
 
Symfony2 introduction
Symfony2 introductionSymfony2 introduction
Symfony2 introductionHidenori Goto
 
Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話Yoshikazu Kawashima
 
Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話ssuser551c92
 
Introduction of symfony development process & What's symfony 1.3?
Introduction of symfony development process & What's symfony 1.3?Introduction of symfony development process & What's symfony 1.3?
Introduction of symfony development process & What's symfony 1.3?Kousuke Ebihara
 
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013晃 遠山
 
KLab Social Game Platform ~Symfony1.4活用事例~
KLab Social Game Platform ~Symfony1.4活用事例~KLab Social Game Platform ~Symfony1.4活用事例~
KLab Social Game Platform ~Symfony1.4活用事例~KLab株式会社
 
Symfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source CodeSymfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source CodeHidenori Goto
 
Lpicl304セミナー資料20140727
Lpicl304セミナー資料20140727Lpicl304セミナー資料20140727
Lpicl304セミナー資料20140727Takahiro Kujirai
 
20110715 osc2011 kyoto
20110715 osc2011 kyoto20110715 osc2011 kyoto
20110715 osc2011 kyotoYamauchi isamu
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワークTakuya Sato
 
20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造do_aki
 
Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介Yuuki Nara
 
20160619_LPICl304 技術解説セミナー in AP浜松町
20160619_LPICl304 技術解説セミナー in AP浜松町20160619_LPICl304 技術解説セミナー in AP浜松町
20160619_LPICl304 技術解説セミナー in AP浜松町Takahiro Kujirai
 

Similaire à 第4回Symfony2勉強会 基礎編ワークショップ.0 (20)

Guiなテスト環境
Guiなテスト環境Guiなテスト環境
Guiなテスト環境
 
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
 
symfony1.2最新動向 - 第二回symfony勉強会
symfony1.2最新動向 - 第二回symfony勉強会symfony1.2最新動向 - 第二回symfony勉強会
symfony1.2最新動向 - 第二回symfony勉強会
 
Symfony2 workshop-1
Symfony2 workshop-1Symfony2 workshop-1
Symfony2 workshop-1
 
Symfony2 intro-20111204
Symfony2 intro-20111204Symfony2 intro-20111204
Symfony2 intro-20111204
 
20090415 すばらしきSymfonyの世界へようこそ
20090415 すばらしきSymfonyの世界へようこそ20090415 すばらしきSymfonyの世界へようこそ
20090415 すばらしきSymfonyの世界へようこそ
 
Symfony updates
Symfony updatesSymfony updates
Symfony updates
 
Symfony2 introduction
Symfony2 introductionSymfony2 introduction
Symfony2 introduction
 
Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話
 
Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話Ruby で ffmpeg の filter_complex と戯れる話
Ruby で ffmpeg の filter_complex と戯れる話
 
Introduction of symfony development process & What's symfony 1.3?
Introduction of symfony development process & What's symfony 1.3?Introduction of symfony development process & What's symfony 1.3?
Introduction of symfony development process & What's symfony 1.3?
 
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
 
KLab Social Game Platform ~Symfony1.4活用事例~
KLab Social Game Platform ~Symfony1.4活用事例~KLab Social Game Platform ~Symfony1.4活用事例~
KLab Social Game Platform ~Symfony1.4活用事例~
 
Symfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source CodeSymfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source Code
 
Lpicl304セミナー資料20140727
Lpicl304セミナー資料20140727Lpicl304セミナー資料20140727
Lpicl304セミナー資料20140727
 
20110715 osc2011 kyoto
20110715 osc2011 kyoto20110715 osc2011 kyoto
20110715 osc2011 kyoto
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワーク
 
20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造
 
Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介
 
20160619_LPICl304 技術解説セミナー in AP浜松町
20160619_LPICl304 技術解説セミナー in AP浜松町20160619_LPICl304 技術解説セミナー in AP浜松町
20160619_LPICl304 技術解説セミナー in AP浜松町
 

Dernier

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Dernier (9)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

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

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