Symfony

symfony2の導入

更新日:

CodeIgniter、CakePHP、ZendFrameworkと勉強してきて、4大PHPフレームワークの老舗とも言えるsymfonyを勉強しないのは片手落ちなので、symfonyについても少し勉強してみることにします。

『symfonyは大規模開発のためのフレームワーク』という固定概念が強くちょっとしたアプリケーションを開発するのには不向きだと思って敬遠していましたが、解説書等を見ると小規模のアプリケーションでも十分に利用するメリットはありそうなので、今回思い切って勉強してみることにしました。毎度のことですが、開発環境はXampp、Dreamweaverを使用して解説します(Xamppのインストール方法は、こちらをご覧下さい)。

1) symfonyのダウロードサイトに行き、zipファイルをダウンロードします。

2) ダウンロードしたzipファイルを解凍します。解凍したSymfonyフォルダを任意の場所に保存します。私はC:\Symfomyに保存しました。

3) Dreamweaverを起動したら、サイト→新規サイトでサイト設定画面を開きます。サイト名をsymfony_local(任意)、ローカルサイトフォルダーをC:\symfony\と入力したら、左メニューのサーバーをクリックします。

4) 『+』(新規サーバーの追加)アイコンをクリックして、サーバー名を『symfony(任意)』、使用する接続を『ローカル/ネットワーク』、サーバーフォルダを『C:\xampp\htdocs\symfony』、Web URLを『http://localhost/symfony/』と入力して保存をクリックします。

5) リモートのチェックを外し、テストにチェックを入れ、保存をクリックします。

6) symfonyをテスト環境にアップロードする前に、『C:\xampp\htdocs』フォルダに新しくsymfonyフォルダを作成して下さい。

7) 『C:\xampp\htdocs』にsymfonyフォルダを作成したら、上矢印のアップロードアイコンをクリックします。『サイト全体をPUTしてよろしいですか?と表示されたらOKをクリックします。』

8) マニュアルに従ってブラウザで『http://localhost/symfony/web/config.php』と入力して環境の診断結果を見てみましょう。

9) 『MAJOR PROBLEMS』が表示されていなければ、とりあえずOKです。『RECOMMENDATIONS』が表示されていますが、これは、Symfony2の機能をフル活用するために必要なモジュールや設定です。とりあえずは現時点では大丈夫そうなので、そのまま『Configure your Symfony Application online』と書かれたリンクをクリックします。

10) このページでデータベースの設定が出来るみたいです。便利ですね。設定したら『NEXT STEP』をクリックします。

11) 次の画面では、シークレットキーを登録するみたいです。『GENERATE』をクリックするたびに新しいキーが生成されます。『NEXT STEP』をクリックします。

12) 新しい設定内容が表示されています。『Go to the Welcome page』と書かれたリンクをクリックします。

13) Welcom!ページが表示されました。一応これでインストールは完了です。但し、Firefoxでは、レイアウトが崩れていました。

14) それではいつものように『Hello,World!』を表示させてみたいと思います。symfonyの場合、只単に、『Hello,World!』を表示させるだけでもかなり面倒です。まずページを作り始める前にバンドルを作る必要があります。symfonyでは、このバンドルの中にPHPクラスや設定ファイル、スタイルシート、JavsScriptのファイルなどあらゆるものを格納するようです。

15) 一つ一つ手入力で作成していくのはかなり面倒そうなので、コマンドプロンプトが苦手な私でも、コードジェネレーターを使ってコマンドプロンプトで作成した方が良さそうです。

16) コマンドプロンプトを起動したら、symfonyをインストールしたフォルダ(ディレクトリ)に移動します。

cd \xampp\htdocs\symfony

17)  バンドルを作成する為のコマンドを実行します。

php app/console generate:bundle

18) ようこそSymfony2のバンドルジェネレーターへと表示され、以下に英語で長々と説明が表示されますが、要約すれば『バンドルは名前空間で提供されます。名前空間は特定の名前(会社名とかクライアント名)で始まり、接尾語にBundleを付与するようにして下さい。』というような意味でしょうか。英語は苦手ですので間違っていたら指摘して下さい。『Bundle namespace:』の後に、『WinRoad\HelloBundle』と入力してEnterしてみます。

19) バンドル名が『WinRoadHelloBundle』でいいかどうかの確認が出ますので、そのままEnterします。

20) 次にバンドルを作成するディレクトリの指定だと思いますが、そのままEnterを押します。デフォルトのディレクトリは、『C:\xampp\htdocs\symfony\src』みたいですね。

21) Configファイルのフォーマットを訪ねているのだと思いますが、マニュアルでは、ymlだったので、ymlと入力してEnterします。

22) 次は、全体のディレクトリ構造を自分自身で作成するかどうかを尋ねているのでしょうか。小難しいことは嫌なので、デフォルトの[no]のまま、Enterします。

23) コードの自動生成前の最終確認で、[yes]のままEnterします。

25) 最後にカーネルとルーティングの自動アップデートの確認が出てきますが、どちらとも[yes]のままEnterします。すると今生成されたコードを使用して起動することが出来ます。と表示して、コマンドプロンプトが初期の入力待ち画面に戻りました。

26) それでは、実際に生成されたコードを確認してみます。10個のフォルダ(ディレクトリ)と8個のファイルが生成されています。すごいですね。

27) ブラウザに『http://localhost/web/app_dev.php/hello/Wrold』と入力してみます。とりあえず『Hello World!』が表示されました。

28) 何故『Hello,World』が表示されたかもわからないまま終わるのは後味が悪いので、ちょっとコードを調べてみます。『src/WinRoad/HelloBundle/Controller/DefaultController.php』を開いてみます。

29) indexActionを見てみると、

public function indexAction($name)
{
return $this->render('WinRoadHelloBundle:Default:index.html.twig', array('name' => $name));
}

30) とありますので、nameパラメータをindex.html.twigに渡して、レンダリングしているみたいです。

31) 『WinRoad/HelloBundle/Resources/views/Default/index.html.twig』ファイルを見てみます。びっくりするほど簡単です。

Hello {{ name }} !

32) と入力されています。少し加工してみます。

<h1>Hello {{ name }} !</h1>
<hr>

33) ブラウザで『localhost/symfony/web/app_dev.php/hello/WinRoad』と入力してみます。

少し、Symfony2を垣間見ました。複雑ではありますが、覚えたら面白そうですね。本日は以上です。

尚、DreamweaverでTwigファイルを認識しない場合は、こちらの『DreamweaverにCakePHPのCTPファイルを認識させる方法』を参考にして、Twigファイルを認識させるようにして下さい。

-Symfony
-

Copyright© WinRoad徒然草 , 2018 All Rights Reserved Powered by AFFINGER5.