symfony
更新日:2009/2/3
対応ソフトウェア:symfony 1.2.3
公式サイト
http://www.symfony-project.org/
参考サイト
準備
あらかじめインストールしておくもの
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」と表示されればよい。