![]() |
|
Getting Started with symfonyプロジェクトのセットアップ |
|
You are currently reading "Getting Started with symfony" which is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.

|
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License. |
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公開のルートディレクトリ(下記を参照) |
なぜ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番目の引数を省略するだけです。
Doctrineの代わりにPropelを使いたい場合、
generate:projectタスクで新しいプロジェクトを作るとき、--orm=Propelを加えます。 ORMを使いたくない場合、--orm=noneを渡すだけです。
generate:appタスクを実行してfrontendアプリケーションを作ります:
$ php symfony generate:app
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/ |
グローバルテンプレートファイル |
セキュリティ
generate:appタスクを呼び出すとき、セキュリティに関連する2つのオプションを渡すこともできます:
--escaping-strategy: XSS攻撃を阻止する出力エスケーピングを有効にする--csrf-secret: CSRF攻撃を阻止するセッショントークンを有効にするタスクにこれらの2つのオプションを渡すことで、Webでもっとよく知られる2つの脆弱性から将来の開発をセキュアにしました。 これで作業は終わりです。 symfonyはあなたに代わって自動的にセキュリティ対策を行います。
XSS(クロスサイトスクリプティング)もしくはCSRF(クロスサイトリクエストフォージェリ)を知らなければ、これらのセキュリティの脆弱性を学ぶために時間をかけてください。
新しく作成したプロジェクトにアクセスしてみる前に、Webサーバーが書き込みできるようにcache/とlog/ディレクトリに書き込みできるようにこれらのディレクトリの書き込みパーミッションを適切なレベルに設定する必要があります:
$ chmod 777 cache/ log/
バージョン管理ツールを使う方々のための豆知識
symfonyはsymfonyプロジェクトの2つのディレクトリ、
cache/とlog/にのみ書き込みます。 バージョン管理ツールはこれらのディレクトリの内容を無視します(たとえばSubversionの場合svn:ignoreプロパティを編集します)。
次のコマンドを入力すればプロジェクトで使われる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';
この方法では、プロジェクトのディレクトリをマシンの別の場所、もしくはほかのマシンに移動させてもプロジェクトは立派に動作します。
If you find a typo or an error, please register and open a ticket.
If you need support or have a technical question, please post to the official user mailing-list.