Upload
yusuke-ueno
View
7.771
Download
5
Embed Size (px)
DESCRIPTION
第4回Symfony2勉強会 基礎編ワークショップで使用したスライドです。Symfony2の概要を説明しています。
Citation preview
1
会場注意
• Symfony2 が動く環境を急いで整えてください!
• 会場無線 LAN が使えません野良無線の提供をしていただける方が居ましたら、前方ホワイトボードにアイパス設定を書いてくださ
いご協力お願いします m(_ _)m
トイレに行くにはカードキーが必要になりますスタッフにお申し付けください
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
Symfony2 勉強会 #4基礎編 ワークショップ .0
2011.06.04上野裕介
3
まずは…環境整備
1. Standard Edition のダウンロード2. 解凍・配置3. config.php4. app_dev.php の確認
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
4
1.Standard Edition のダウンロード
• http://symfony.com/download• Symfony2 Standard Edition BETA 3– vendors 一式が同梱済み
• 環境– php 5.3.2 以上
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
5
2. 解凍・配置
• Web サーバで閲覧できる場所に解凍・配置• ( VirtualHost 、 hosts を設定)<VirtualHost *:80> ServerAdmin webmaster@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 DirectoryIndex app.php index.html index.htm </Directory></VirtualHost>
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
6
3. config.php
• 動作確認の単体 php• たぶん問題が 2 つ起きるので、以下のコマン
ド– sudo chmod -R 777 app/cache/ app/logs/
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
7
4. app_dev.php の確認
• app_dev.php が見れます!• [RUN THE DEMO] で hello, World が見れます
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
8
自己紹介
• 上野 裕介 (@uechoco)• 有限会社スグエ - エンジニア• 社会人 2 年目• 現在 CakePHP 使い– 元 symfony 1.x 使い
• キイロイトリ 好き !!
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
9
キイロイトリグッズたち
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
10
今回
• Symfony2 勉強会 第 1 部– 概要 (30min)– ワークショップ (1hour)
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
11
Symfony2 とは
• symfony 1.x とは全く別物– アップグレードはありません
• php 5.3.2 以降– 名前空間
• DI コンテナ– 遅延読み込み (lazy load)
• バンドル• Doctrine2• Twig
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
12
Symfony2 を使う 6 つの技術的な利点
1. Faster and less greedy2. Unlimited Flexibility3. Expandable4. Stable and sustainable5. The joy of developing6. Ease of use
出典: The technological benefits of Symfony in 6 easy lessonshttp://symfony.com/six-good-technical-reasons
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
Symfony2 は symfony 1.4 より 3 倍速い
メモリの使用量は半分
13
Symfony2 の現状
• 本当は 2011/3/5 に正式リリース予定だった
• ちょうど 3 ヶ月経ちました
• Symfony2 Beta3
• リリースはいつ ?
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
14
ワークショップの前に解説するもの
• 名前空間• DI• Symfony2 の処理フロー
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
15
名前空間 (1 of 4)
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
<?phpnamespace HTTP\Client;
use HTTP\Message\Request;
interface ClientInterface{
/** * Sends a request. */function send(Request $request);
}
HTTP\Message\RequestHTTP\Client\Request
16
名前空間 (2 of 4)
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
<?phpnamespace HTTP\Client;
use HTTP\Message\Request as HttpRequest;
interface ClientInterface{
/** * Sends a request. */function send(HttpRequest $request);
}
17
名前空間 (3 of 4)
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
<?phpnamespace HTTP\Client;
use HTTP\Message;
interface ClientInterface{
/** * Sends a request. */function send(Message\Request $request);
}
18
名前空間 (4 of 4)
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
<?phpnamespace HTTP\Client;
interface ClientInterface{
/** * Sends a request. */function send(\sfWebRequest $request);
}
19
DI (1 of 4)
• Dependency Injection( 依存性の注入 )– Java でよく使われていたデザインパターンの 1 つ
• DI コンテナ=依存性を注入する入れ物– ( 外部の設定ファイルを読み込んで )– ( 実行時に )– 依存性を注入– ( インスタンスや設定値を管理 )
• Symfony2 の内部を理解するには必須
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
20
DI (2 of 4)
• 依存しているコード
• User クラスが SessionStorage クラスに依存している ( 設定を変えようにもテストしようにも面倒 )
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
<?phpclass User{
protected $storage;function __construct(){
$this->storage = new SessionStorage(‘SESSION_ID’);
}}
クラス名がハードコーディング
設定値がハードコーディング
21
DI (3 of 4)
• 設定変更、 SessionStorage クラスの置き換え、が User クラスに変更を加えずにできる
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
<?phpclass 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 基礎編ワークショップ
23
Symfony2 の処理フロー (1 of 3)
• Web ページを表示する
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
リクエスト
レスポンス
24
Symfony2 の処理フロー (2 of 3)
• Symfony2
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
リクエスト
レスポンス
Symfony2Request
Response
内部処理
25
Symfony2 の処理フロー (3 of 3)
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ
Symfony2Request
Response
内部処理 =Kernel
Controller
addAction
URI のマッチング
26
• 以降はワークショップです !
2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ