symfonyでは、同じデータモデルを共有するアプリケーション(application)はプロジェクト(project)に再分類されます。多くのプロジェクトでは、2つの異なるアプリケーション: フロントエンド(frontend)とバックエンド(backend)が用意されます。
プロジェクトの作成
sfproject/ディレクトリから、symfonyプロジェクトを実際に作成するためにgenerate:projectタスクを実行します:
$ php lib/vendor/symfony/data/bin/symfony generate:project PROJECT_NAME
Windowsでは次のようになります:
c:\> php lib\vendor\symfony\data\bin\symfony generate:project PROJECT_NAME
generate:projectタスクはsymfonyプロジェクトに必要なデフォルトのディレクトリ構造を生成します:
| ディレクトリ | 説明 |
|---|---|
apps/ |
すべてのプロジェクトのアプリケーションをホストする |
cache/ |
フレームワークによってキャッシュされるファイル |
config/ |
プロジェクトの設定ファイル |
data/ |
- |
lib/ |
プロジェクトのライブラリとクラス |
log/ |
フレームワークのログファイル |
plugins/ |
インストールされたプラグイン |
test/ |
ユニットテストと機能テストのファイル |
web/ |
Web公開のルートディレクトリ(下記を参照) |
note
なぜsymfonyはこんなに多くのファイルを生成するのか? フルスタックフレームワークを使う主な利点の1つは開発プロセスを標準化することです。 symfonyのファイルとディレクトリのデフォルト構造のおかげで、symfonyの知識がある開発者であればsymfonyプロジェクトのメンテナンスを引き継ぐことができます。 数分のうちに、開発者はコードに飛び込み、バグを修正し、新しい機能を追加できるようになります。
タスクを実行するときに書かなければならない文字数を短くするためにgenerate:projectタスクはプロジェクトのルートディレクトリでsymfonyショートカットも作りました。
ですので今後は、symfonyプログラムへのフルパスを使う代わりに、symfonyショートカットを使うことができます。
データベースを設定する
symfonyフレームワークはPDOでサポートされるすべてのデータベース(MySQL、PostgreSQL、SQLite、Oracle、MSSQL、・・・)をそのまま使えます。 PDOの上に、symfonyは2つのORMツール: PropelとDoctrineを搭載しています。
新しいプロジェクトを始めるとき、デフォルトではDoctrineが有効です。
Doctrineによって使われるデータベースを設定するのは簡単でconfigure:databaseタスクを使います:
$ php symfony configure:database "mysql:host=localhost;dbname=dbname" root mYsEcret
configure:databaseタスクはデータベースにアクセスするための3つの引数: PDO DSN、ユーザー名とパスワードをとります。
開発サーバーのデータベースにアクセスする必要がない場合、3番目の引数を省略するだけです。
tip
Doctrineの代わりにPropelを使いたい場合、generate:projectタスクで新しいプロジェクトを作るとき、--orm=Propelを加えます。
ORMを使いたくない場合、--orm=noneを渡すだけです。
アプリケーションの作成
generate:appタスクを実行してfrontendアプリケーションを作ります:
$ php symfony generate:app
tip
symfonyショートカットは実行可能なファイルなので、Unixユーザーはsymfonyを'./symfony'に置き換えることができます。
Windowsでは'symfony.bat'ファイルをプロジェクトにコピーして'php symfony'の代わりに'symfony'を使うことができます:
c:\> copy lib\vendor\symfony\data\bin\symfony.bat .
引数として渡されるアプリケーションの名前をもとに、generate:appタスクはアプリケーションに必要なデフォルトのディレクトリ構造をapps/frontend/ディレクトリで作ります:
| ディレクトリ | 説明 |
|---|---|
config/ |
アプリケーションの設定ファイル |
lib/ |
アプリケーションのライブラリとクラス |
modules/ |
アプリケーションのコード(MVC) |
templates/ |
グローバルテンプレートファイル |
ディレクトリ構造
新しく作成したプロジェクトにアクセスしてみる前に、Webサーバーが書き込みできるようにcache/とlog/ディレクトリに書き込みできるようにこれらのディレクトリの書き込みパーミッションを適切なレベルに設定する必要があります:
$ chmod 777 cache/ log/
symfonyのパス
次のコマンドを入力すればプロジェクトで使われるsymfonyのバージョンを表示できます:
$ php symfony -V
-Vオプションはsymfonyのインストールディレクトリへのパスも表示します。
このパスはconfig/ProjectConfiguration.class.phpに保存されています:
// config/ProjectConfiguration.class.php require_once '/Users/fabien/symfony-1.4/lib/autoload/sfCoreAutoload.class.php';
よりよいポータビリティのために、symfonyのインストールの絶対パスを相対パスに変更します:
// config/ProjectConfiguration.class.php require_once dirname(__FILE__).'/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';
この方法では、プロジェクトのディレクトリをマシンの別の場所、もしくはほかのマシンに移動させてもプロジェクトは立派に動作します。
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.