Symfony2 は、PHP 言語をベースにした Web 開発フレームワークで、開発速度が速く、パフォーマンスが高いという特徴があります。この記事では、プログラム例の実装プロセスを通じて、Symfony2 フレームワークの構成とプログラム開発について詳しく説明します。
Ubuntu システムを例として、.tgz 圧縮パッケージを使用し、ソース ファイルを /var/www ディレクトリに解凍して次のコマンドを実行します。
tar zxvf Symfony_Standard_Vendors_2.0.###.tgz -C /var/www
上記の ### はバージョン番号を指します。ダウンロードしたところ、BETA5 でした。
解凍後の Symfony2 のディレクトリは次のとおりです:
/var/www/ <- Web根目录 Symfony/ <- Symfony2解压目录 app/ <- 存放symfony的核心文件的目录 cache/ <- 存放缓存文件的目录 config/ <- 存放应用程序全局配置的目录 logs/ <- 存放日志的目录 src/ <- 应用程序源代码 ... vendor/ <- 供应商或第三方的模组和插件 ... web/ <- Web入口 app.php <- 生产环境下的前端控制器 ...
ベンダー (サードパーティ) コンテンツをインストールする必要がある場合 (ベンダーなしバージョンをダウンロードした場合)、またはベンダー (サードパーティ) コンテンツを更新する必要がある場合は、次を使用できます:
cd /var/www/Symfony php bin/vendors install
2. 設定
Symfony2 の設定は非常に簡単で、ブラウザに
http://localhost/Symfony/web/config.php
と入力し、プロンプトに従うだけです。注目に値するのは、app/cache ディレクトリと app/logs ディレクトリの権限の問題です。Ubuntu にインストールしたので、使用できます (firehare は私のユーザー名です。ここでは自分のユーザー名に置き換えることができます):
#为了保险起见 rm -rf app/cache/* rm -rf app/logs/* #设置ACL sudo setfacl -R -m u:www-data:rwx -m u:firehare:rwx app/cache app/logs sudo setfacl -dR -m u:www-data:rwx -m u:firehare:rwx app/cache app/logs
システムが setfacl コマンドをサポートしていない場合、確認する場所が 2 つあります:
setfacl がインストールされているかどうか、インストールされていない場合は、次のコマンドを使用してインストールできます (デフォルトで setfacl がインストールされているようです) (acl と呼ばれる) を含む Ubuntu 11.10:
sudo apt-get install setfacl
setfacl がインストールされている場合は、/etc/fstab ファイルをチェックして、acl オプションが追加されているかどうかを確認してください:
# /var was on /dev/sda7 during installation UUID=c2cc4104-b421-479a-b21a-1108f8895110 /var ext4 defaults,acl 0 2
次に、次のように入力します。ページのプロンプトに従ってデータベース名とその他の情報を入力し、次に示すように、この情報を /var/www/Symfony/app/config/parameters.ini ファイルにコピーします。 OK、ブラウザに次のアドレスを入力すると、デモ ページが表示されます:
; These parameters can be imported into other config files ; by enclosing the key with % (like %database_user%) ; Comments start with ';', as in php.ini [parameters] database_driver="pdo_mysql" database_host="localhost" database_name="symfony" database_user="symfony" database_password="symfony" mailer_transport="smtp" mailer_host="localhost" mailer_user="" mailer_password="" locale="zh_CN" secret="29f96e9e70c2797cb77dd088d3954d3c38d9b33f"
3. プログラムの例:
http://localhost/Symfony/web/app_dev.php
php app/console gen:bundle "AcmeHelloBundle" src 为了确保Acme名称空间可以被自动加载,请在你的app/autoload.php文件添加下列语句: $loader->registerNamespaces(array( // ... //添加自定义的名称空间 'Acme' => __DIR__.'/../src', // ... )); 最后是将该Bundle注册到Symfony2中,请在你的app/AppKernel.php文件中添加下列语句: // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new AcmeHelloBundleAcmeHelloBundle(), ); // ... return $bundles; }
# app/config/routing.yml homepage: pattern: / defaults: { _controller: FrameworkBundle:Default:index } hello: resource: "@AcmeHelloBundle/Resources/config/routing.yml"
# src/Acme/HelloBundle/Resources/config/routing.yml hello: pattern: /hello/{name} defaults: { _controller: AcmeHelloBundle:Hello:index, name:'pu' }
// src/Acme/HelloBundle/Controller/HelloController.php namespace AcmeHelloBundleController; use SymfonyComponentHttpFoundationResponse; class HelloController { public function indexAction($name) { return new Response('<html><body>Hello '.$name.'!</body></html>'); } }
http://localhost/hello/index/World
{# app/Resources/views/layout.html.twig #} <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>{% block title %}Hello Application{% endblock %}</title> </head> <body> {% block body %}{% endblock %} </body> </html>
最後に、コントローラーの HTML ステートメントを変更して、上記のテンプレートをレンダリングします。
{# src/Acme/HelloBundle/Resources/views/Hello/index.html.twig #} {% extends '::layout.html.twig' %} {% block body %} Hello {{ name }}! {% endblock %}
高性能 PHP フレームワーク Symfony2 クラシック入門チュートリアルに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。