Getting Started with symfony

プロジェクトのセットアップ

You are currently browsing
the website for symfony 1

Visit the Symfony2 website


About

You are currently reading "Getting Started with symfony" which is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.

Tutorial Content

Master symfony

Be trained by SensioLabs experts (2 to 6 day sessions -- French or English).
trainings.sensiolabs.com

Books on symfony

Learn more about symfony with the official guides.
books.sensiolabs.com

L'audit Qualité par SensioLabs

200 points de contrôle de votre applicatif web.
audit.sensiolabs.com

Chapter Content

プロジェクトの作成

アプリケーションの作成

ディレクトリ構造

データベースを設定する

Doctrineに切り替える

symfony training
Be trained by symfony experts
May 29: Paris (Web Development with Symfony2 - Français)
May 31: Paris (Mastering Symfony2 - Français)
Jun 06: Paris (Introduction to Symfony2 - Français)
Jun 06: Paris (Introduction to Symfony2 - English)
Jun 06: Paris (Going Further with Symfony2 - English)
and more...

Search


powered by google
You are currently browsing "Getting Started with symfony" in Japanese for the 1.2 version - Switch to language:
Creative Commons License This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.
This version of symfony is not maintained anymore.
If some of your projects still use this version, consider upgrading as soon as possible.

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/ プロジェクトの設定ファイル
lib/ プロジェクトのライブラリとクラス
log/ フレームワークのログファイル
plugins/ インストールされたプラグイン
test/ ユニットテストと機能テストのファイル
web/ Web公開ディレクトリのルート(下記を参照)

なぜsymfonyはこんなに多くのファイルを生成するのか? フルスタックフレームワークを使う主な利点の1つは開発プロセスを標準化することです。 symfonyのファイルとディレクトリのデフォルト構造のおかげで、symfonyの知識がある開発者であればsymfonyプロジェクトのメンテナンスを引き継ぐことができます。 数分のうちに、開発者はコードに飛び込み、バグを修正し、新しい機能を追加できるようになります。

タスクを実行するときに書かなければならない文字数を短くするためにgenerate:projectタスクはプロジェクトのルートディレクトリでsymfonyショートカットも作りました。

ですので今後は、symfonyプログラムへのフルパスを使う代わりに、symfonyショートカットを使うことができます。

アプリケーションの作成

generate:appタスクを実行してfrontendアプリケーションを作ります:

$ php symfony generate:app --escaping-strategy=on --csrf-secret=UniqueSecret frontend

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つのオプションを渡すこともできます:

タスクにこれらの2つのオプションを渡すことで、Webでもっともよく知られる2つの脆弱性から将来の開発をセキュアにしました。 これで作業は終わりです。 symfonyはあなたに代わって自動的にセキュリティ対策を行います。

XSS(クロスサイトスクリプティング)もしくはCSRF(クロスサイトリクエストフォージェリ)を知らなければ、これらのセキュリティの脆弱性を学ぶために時間をかけてください。

ディレクトリ構造

新しく作成したプロジェクトにアクセスしてみる前に、Webサーバーが書き込みできるようにcache/log/ディレクトリに書き込みできるようにこれらのディレクトリの書き込みパーミッションを適切なレベルに設定する必要があります:

$ chmod 777 cache/ log/

データベースを設定する

最初にやりたいことの1つはおそらくプロジェクトのデータベース接続を設定することです。 symfonyフレームワークはPDOが サポートするデータベース(MySQL、PostgreSQL、SQLite、Oracle、MSSQL、・・・)をすべてサポートします。 PDOの上に、symfonyは2つのORMツール: PropelとDoctrineを搭載しています。 PropelはデフォルトのORM(オブジェクトリレーショナルマッピング)ですが、Doctrineに切り替えるのはきわめて簡単です(詳細な情報は次のセクションを参照)。

configure:databaseタスクを使えばデータベースの設定は簡単にできます:

$ php symfony configure:database "mysql:host=localhost;dbname=dbname" root mYsEcret

configure:databaseタスクは3つの引数: PDO DSN、データベースにアクセスするユーザー名、とパスワードを受け取ります。 開発サーバーのデータベースにアクセスする必要がない場合、3番目の引数を省略します。

Doctrineに切り替える

Propelの代わりにDoctrineを使うことを決めた場合、sfDoctrinePluginを有効にしてsfPropelPluginを無効にする必要があります。これはconfig/ProjectConfiguration.class.phpの次のコードを変更することで実現できます:

public function setup()
{
  $this->enableAllPluginsExcept(array('sf#PropelPlugin', 'sfCompat10Plugin'));
}

これらの変更を行った後で、次のコマンド群を立ち上げます:

$ php symfony plugin:publish-assets
$ php symfony cc
$ rm web/sfPropelPlugin
$ rm config/propel.ini
$ rm config/schema.yml
$ rm config/databases.yml

Doctrine用のデータベースを設定するには次のコマンドを実行します:

$ php symfony configure:database --name=doctrine --class=sfDoctrineDatabase "mysql:host=localhost;dbname=jobeet" root mYsEcret
Webサーバーの設定 »
« symfonyのインストール

Questions & Feedback

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.