symfony

更新日:2009/2/3

対応ソフトウェア:symfony 1.2.3

公式サイト

参考サイト

準備

あらかじめインストールしておくもの

PHP 5.2以降

(関連)

導入OS

Fedora 10

インストール

symfonyはPEARの他に以下のインストール方法があるが、ここではPEARを利用する。

sandbox

全ての必須ライブラリや基本構成が整っている。初心者向き。

手動

ソースからインストールする。最新のパッチを適用したり独自機能を追加する場合などに使用する。

PEAR自身のアップグレード

% sudo /usr/local/bin/pear upgrade PEAR

(*) proxyサーバ経由の場合は先に以下の設定を行っておく。

% pear config-set http_proxy <proxyサーバ>:<ポート>

symfonyチャンネル追加

% sudo /usr/local/bin/pear channel-discover pear.symfony-project.com
Adding Channel "pear.symfony-project.com" succeeded
Discovery of channel "pear.symfony-project.com" succeeded

symfonyインストール

% sudo /usr/local/bin/pear install symfony/symfony
downloading symfony-1.2.3.tar ...
Starting to download symfony-1.2.3.tar (16,010,240 bytes)
......................................done: 16,010,240 bytes
install ok: channel://pear.symfony-project.com/symfony-1.2.3

% symfony -V
symfony version 1.2.3 (/usr/local/lib/php/symfony)

インストール物 (man,infoは除く)

/usr/local/bin/symfony

/usr/local/lib/php/symfony/*

/usr/local/lib/php/doc/symfony/*

/usr/local/lib/php/data/symfony/*

サンプルWebアプリケーション作成

ここでは画面に「Hello world」と表示する簡単なアプリを作ってみる。

symfonyプロジェクト作成

まずWebサーバのドキュメントルートにプロジェクトを格納するディレクトリを作り、そこにプロジェクトを作成する。

プロジェクト名は「testproject」とする。

% cd <Webサーバのドキュメントルート>
% mkdir testproject
% cd testproject
% symfony generate:project testproject 

以下のディレクトリ/ファイルが作成される。

+- apps (ディレクトリ)
|
+- cache (ディレクトリ)
|   |
|   +- project_autoload.cache
|
+- config (ディレクトリ)
|   |
|   +- ProjectConfiguration.class.php
|   |
|   +- databases.yml
|   |
|   +- propel.ini
|   |
|   +- properties.ini
|   |
|   +- rsync_exclude.txt
|   |
|   +- schema.yml
|   |
|   +- vhost.sample
|
+- data (ディレクトリ)
|   |
|   +- fixtures (ディレクトリ)
|       |
|       +- fixtures.yml
|
+- doc (ディレクトリ)
|
+- lib (ディレクトリ)
|
+- log (ディレクトリ)
|
+- plugins (ディレクトリ)
|
+- symfony
|
+- test (ディレクトリ)
|   |
|   +- bootstrap (ディレクトリ)
|   |   |
|   |   +- functional.php
|   |   |
|   |   +- unit.php
|   |
|   +- functional (ディレクトリ)
|   |
|   +- unit (ディレクトリ)
|
+- web (ディレクトリ)
    |
    +- .htaccess
    |
    +- css (ディレクトリ)
    |   |
    |   +- main.css
    |
    +- images (ディレクトリ)
    |
    +- js (ディレクトリ)
    |
    +- robots.txt
    |
    +- sfPropelPlugin -> /usr/local/lib/php/symfony/plugins/sfPropelPlugin/web/
    |
    +- sfProtoculousPlugin -> /usr/local/lib/php/symfony/plugins/sfProtoculousPlugin/web/
    |
    +- uploads (ディレクトリ)
        |
        +- assets (ディレクトリ)

標準のスタイルシートや画像ファイルなどにアクセスできるよう、以下のシンボリックリンクを張る。

% cd web
% ln -s /usr/local/lib/php/data/symfony/web/sf

symfonyアプリケーション作成

続いてアプリケーションを作成する。

アプリケーション名は「testapp」とする。

% symfony generate:app testapp

以下のディレクトリ/ファイルが作成される。

+- apps (ディレクトリ)
|   |
|   +- testapp (ディレクトリ)
|       |
|       +- config (ディレクトリ)
|       |   |
|       |   +- app.yml
|       |   |
|       |   +- cache.yml
|       |   |
|       |   +- factories.yml
|       |   |
|       |   +- filters.yml
|       |   |
|       |   +- routing.yml
|       |   |
|       |   +- security.yml
|       |   |
|       |   +- settings.yml
|       |   |
|       |   +- testappConfiguration.class.php
|       |   |
|       |   +- view.yml
|       |
|       +- i18n (ディレクトリ)
|       |
|       +- lib (ディレクトリ)
|       |   |
|       |   +- myUser.class.php
|       |
|       +- modules (ディレクトリ)
|       |
|       +- templates (ディレクトリ)
|           |
|           +- layout.php
|
+- web (ディレクトリ)
|   |
|   +- index.php
|   |
|   +- testapp_dev.php
|
+- test (ディレクトリ)
    |
    +- functional (ディレクトリ)
        |
        +- testapp (ディレクトリ)

ここでWebブラウザから「http://localhost/testproject/web」にアクセスして以下の画面が表示されることを確認する。

symfonyモジュール作成

上記のアプリケーション配下にモジュールを作成する。

モジュール名は「testmodule」とする。

% symfony generate:module testapp testmodule

以下のディレクトリ/ファイルが作成される。

+- apps (ディレクトリ)
|   |
|   +- testapp (ディレクトリ)
|       |
|       +- modules (ディレクトリ)
|           |
|           +- testmodule (ディレクトリ)
|               |
|               +- actions (ディレクトリ)
|               |   |
|               |   +- actions.class.php
|               |
|               +- templates (ディレクトリ)
|                   |
|                   +- indexSuccess.php
|
+- test (ディレクトリ)
    |
    +- functional (ディレクトリ)
        |
        +- testapp (ディレクトリ)
            |
            +- testmoduleActionsTest.php

HTML作成

最後に「Hello world」と表示するHTMLを記述する。

まずアクションファイル中のデフォルトモジュールを呼び出すところをコメントアウトし、変数に「Hello world」をセットする行を追加する。

% vi apps/testapp/modules/testmodule/actions/actions.class.php 

<?php

class testmoduleActions extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
//    $this->forward('default', 'module'); ← コメントアウト
    $this->message = 'Hello world'; ← 追加
  }
}

次にデフォルトのテンプレート(空ファイル)に上記変数を表示するコードを記述する。

% vi apps/testapp/modules/testmodule/templates/indexSuccess.php 

<?php echo $message;?>

最後にWebブラウザで「http://localhost/testproject/web/testmodule」にアクセスして「Hello world」と表示されればよい。