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

26
会会会会 • Symfony2 会会会会会会会会会会会会会会会会• 会会会会 LAN 会会会会会会 会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会会 会会会会会会会会会 m(_ _)m 会会会会会会会会会会会会会会会会会会会会会 会会会会会会会会会会会会会会 2011.06.04 Symfony2 会会会 #4 会会会会会会会会会会 1

Upload: yusuke-ueno

Post on 20-Jun-2015

7.771 views

Category:

Technology


5 download

DESCRIPTION

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

TRANSCRIPT

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

1

会場注意

• Symfony2 が動く環境を急いで整えてください!

• 会場無線 LAN が使えません野良無線の提供をしていただける方が居ましたら、前方ホワイトボードにアイパス設定を書いてくださ

いご協力お願いします m(_ _)m

トイレに行くにはカードキーが必要になりますスタッフにお申し付けください

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

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

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

2011.06.04上野裕介

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

3

まずは…環境整備

1. Standard Edition のダウンロード2. 解凍・配置3. config.php4. app_dev.php の確認

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

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

4

1.Standard Edition のダウンロード

• http://symfony.com/download• Symfony2 Standard Edition BETA 3– vendors 一式が同梱済み

• 環境– php 5.3.2 以上

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

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

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 基礎編ワークショップ

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

6

3. config.php

• 動作確認の単体 php• たぶん問題が 2 つ起きるので、以下のコマン

ド– sudo chmod -R 777 app/cache/ app/logs/

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

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

7

4. app_dev.php の確認

• app_dev.php が見れます!• [RUN THE DEMO] で hello, World が見れます

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

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

8

自己紹介

• 上野 裕介 (@uechoco)• 有限会社スグエ - エンジニア• 社会人 2 年目• 現在 CakePHP 使い– 元 symfony 1.x 使い

• キイロイトリ 好き !!

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

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

9

キイロイトリグッズたち

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

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

10

今回

• Symfony2 勉強会 第 1 部– 概要 (30min)– ワークショップ (1hour)

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

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

11

Symfony2 とは

• symfony 1.x とは全く別物– アップグレードはありません

• php 5.3.2 以降– 名前空間

• DI コンテナ– 遅延読み込み (lazy load)

• バンドル• Doctrine2• Twig

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

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

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 倍速い

メモリの使用量は半分

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

13

Symfony2 の現状

• 本当は 2011/3/5 に正式リリース予定だった

• ちょうど 3 ヶ月経ちました

• Symfony2 Beta3

• リリースはいつ ?

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

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

14

ワークショップの前に解説するもの

• 名前空間• DI• Symfony2 の処理フロー

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

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

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

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

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);

}

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

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);

}

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

18

名前空間 (4 of 4)

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

<?phpnamespace HTTP\Client;

interface ClientInterface{

/** * Sends a request. */function send(\sfWebRequest $request);

}

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

19

DI (1 of 4)

• Dependency Injection( 依存性の注入 )– Java でよく使われていたデザインパターンの 1 つ

• DI コンテナ=依存性を注入する入れ物– ( 外部の設定ファイルを読み込んで )– ( 実行時に )– 依存性を注入– ( インスタンスや設定値を管理 )

• Symfony2 の内部を理解するには必須

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

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

20

DI (2 of 4)

• 依存しているコード

• User クラスが SessionStorage クラスに依存している ( 設定を変えようにもテストしようにも面倒 )

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

<?phpclass User{

protected $storage;function __construct(){

$this->storage = new SessionStorage(‘SESSION_ID’);

}}

クラス名がハードコーディング

設定値がハードコーディング

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

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);

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

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 基礎編ワークショップ

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

23

Symfony2 の処理フロー (1 of 3)

• Web ページを表示する

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

リクエスト

レスポンス

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

24

Symfony2 の処理フロー (2 of 3)

• Symfony2

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

リクエスト

レスポンス

Symfony2Request

Response

内部処理

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

25

Symfony2 の処理フロー (3 of 3)

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ

Symfony2Request

Response

内部処理 =Kernel

Controller

addAction

URI のマッチング

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

26

• 以降はワークショップです !

2011.06.04 Symfony2 勉強会 #4 基礎編ワークショップ