亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Symfony2中文手冊(cè) / 配置Symfony(和環(huán)境)

配置Symfony(和環(huán)境)

Symfony程序是由一組“負(fù)責(zé)呈現(xiàn)全部功能和可能性”的bundles所構(gòu)成。每個(gè)bundle都可以通過(guò)YAML、XML或PHP格式的配置文件進(jìn)行自定義。默認(rèn)的主力配置文件是在app/config/目錄下,它可以是config.ymlconfig.xmlconfig.php,根據(jù)你的偏好而定:

YAML:# app/config/config.ymlimports:
    - { resource: parameters.yml }
    - { resource: security.yml }framework:
    secret:          "%secret%"
    router:          { resource: "%kernel.root_dir%/config/routing.yml" }
    # ... # Twig Configurationtwig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%" # ...
XML:<!-- app/config/config.xml --><?xml version="1.0" encoding="UTF-8" ?><container xmlns="http://symfony.com/schema/dic/services"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:framework="http://symfony.com/schema/dic/symfony"    xmlns:twig="http://symfony.com/schema/dic/twig"    xsi:schemaLocation="http://symfony.com/schema/dic/services        http://symfony.com/schema/dic/services/services-1.0.xsd        http://symfony.com/schema/dic/symfony        http://symfony.com/schema/dic/symfony/symfony-1.0.xsd        http://symfony.com/schema/dic/twig        http://symfony.com/schema/dic/twig/twig-1.0.xsd">     <imports>
        <import resource="parameters.yml" />
        <import resource="security.yml" />
    </imports>     <framework:config secret="%secret%">
        <framework:router resource="%kernel.root_dir%/config/routing.xml" />
        <!-- ... -->
    </framework:config>     <!-- Twig Configuration -->
    <twig:config debug="%kernel.debug%" strict-variables="%kernel.debug%" />     <!-- ... --></container>
PHP:// app/config/config.php$this->import('parameters.yml');$this->import('security.yml'); $container->loadFromExtension('framework', array(
    'secret' => '%secret%',
    'router' => array(
        'resource' => '%kernel.root_dir%/config/routing.php',
    ),
    // ...)); // Twig Configuration$container->loadFromExtension('twig', array(
    'debug'            => '%kernel.debug%',
    'strict_variables' => '%kernel.debug%',)); // ...

在下面的環(huán)境小節(jié)中,你將會(huì)明確每種格式的文件是如何被加載的。

每一個(gè)根節(jié)點(diǎn),比如frameworktwig,定義了相應(yīng)bundle的配置信息。例如,framework鍵所定義的,是用于Symfony核心的FrameworkBundle之配置信息,包括路由配置、模板配置以及其他內(nèi)核配置。

現(xiàn)在,毋須擔(dān)心每個(gè)根節(jié)點(diǎn)下的特定配置選項(xiàng)。配置文件預(yù)裝了一些有意義的默認(rèn)配置。當(dāng)你詳細(xì)研讀和探索Symfony每一個(gè)部分時(shí),你將會(huì)掌握每一個(gè)功能的特定配置選項(xiàng)之意義。

配置文件的

本章的全部配置信息例程,都將以三種格式展示(YAML、XML和PHP)。每種各有短長(zhǎng),全憑你來(lái)選擇:

  • YAML:簡(jiǎn)單、清楚、可讀性強(qiáng)。(通過(guò)YAML組件了解更多)

  • XML:某些時(shí)候比YAML威力強(qiáng)大,而且支持IDE的代碼自動(dòng)完成。

  • PHP:非常強(qiáng)大,但相比標(biāo)準(zhǔn)配置格式缺乏可讀性。

默認(rèn)配置信息的剝離 ?

你可以剝離出指定bundle的YAML格式的默認(rèn)配置信息,通過(guò)命令行的config:dump-reference命令。以下是剝離FrameworkBundle默認(rèn)配置信息的例子:

$  php bin/console config:dump-reference FrameworkBundle

擴(kuò)展專用假名(配置文件中的根節(jié)點(diǎn))也可以被使用:

$  php bin/console config:dump-reference framework

請(qǐng)參考cookbook文章如何在一個(gè)bunlde中加載服務(wù)的配置信息,來(lái)獲取“給你自己的bundle添加配置信息”的相關(guān)內(nèi)容。

環(huán)境 ?

一套程序可以運(yùn)行在多種環(huán)境中。不同的環(huán)境,共享著相同的PHP代碼(除了前端控制器之外),但卻使用了不同的配置文件。例如,在dev環(huán)境下將記錄警告和錯(cuò)誤級(jí)別的日志,但在prod環(huán)境就只記錄錯(cuò)誤信息。在dev環(huán)境下,有些文件在每一次請(qǐng)求中都被重新構(gòu)建(為了方便開(kāi)發(fā)者),但到了prod環(huán)境時(shí)卻被緩存起來(lái)。所有的環(huán)境都在同一機(jī)器下共存,并且執(zhí)行相同的程序。

一般來(lái)說(shuō),一個(gè)Symfony項(xiàng)目有三種環(huán)境(dev、testprod),但創(chuàng)建一種新的環(huán)境是簡(jiǎn)單的。你可以查看程序在不同環(huán)境下的執(zhí)行效果,只需在瀏覽器中切換前端控制器。要看dev環(huán)境,訪問(wèn)程序的開(kāi)發(fā)版front controller:

localhost/app_dev.php/random/10

如果你要看看程序在生產(chǎn)環(huán)境下的執(zhí)行情況,換上prod版前端控制器:

localhost/app_dev.php/random/10

prod環(huán)境專為速度優(yōu)化,配置信息、路由和Twig模板都被編譯成原生php類并緩存起來(lái)。當(dāng)需要查看prod環(huán)境下的改變時(shí),你需要清除這些緩存文件然后重構(gòu)它們:

$  php bin/console cache:clear --env=prod --no-debug

如果你打開(kāi)web/app.php文件,你可以看到prod環(huán)境被顯式地配置好了:

$kernel = new AppKernel('prod', false);

你可以為一個(gè)新環(huán)境創(chuàng)建一個(gè)新的前端控制器,拷貝上面這行代碼并將prod換成別的值。

test環(huán)境被用于自動(dòng)測(cè)試(automatic testing),不能通過(guò)瀏覽器直接訪問(wèn)。參考“框架指南”中的測(cè)試章節(jié)了解更多。

當(dāng)使用server:run命令來(lái)啟動(dòng)server時(shí),localhost:8000/使用的是你程序中的dev前端控制器。

環(huán)境配置 ?

AppKernel類負(fù)責(zé)加載你指定的配置文件:

// app/AppKernel.phppublic function registerContainerConfiguration(LoaderInterface $loader){
    $loader->load(
        __DIR__.'/config/config_'.$this->getEnvironment().'.yml'
    );}

你已經(jīng)知道.yml后綴可以被改為.xml.php,如果你愿意使用XML或PHP來(lái)完成配置的話。注意每種環(huán)境加載的是它自己的配置文件??匆幌?code>dev環(huán)境下的配置文件:

YAML:# app/config/config_dev.ymlimports:
    - { resource: config.yml }framework:
    router:   { resource: "%kernel.root_dir%/config/routing_dev.yml" }
    profiler: { only_exceptions: false } # ...
XML:<!-- app/config/config_dev.xml --><?xml version="1.0" encoding="UTF-8" ?><container xmlns="http://symfony.com/schema/dic/services"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:framework="http://symfony.com/schema/dic/symfony"    xsi:schemaLocation="http://symfony.com/schema/dic/services        http://symfony.com/schema/dic/services/services-1.0.xsd        http://symfony.com/schema/dic/symfony        http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">     <imports>
        <import resource="config.xml" />
    </imports>     <framework:config>
        <framework:router resource="%kernel.root_dir%/config/routing_dev.xml" />
        <framework:profiler only-exceptions="false" />
    </framework:config>     <!-- ... --></container>
PHP:// app/config/config_dev.php$loader->import('config.php'); 
$container->loadFromExtension('framework', array(    'router' => array(        'resource' => '%kernel.root_dir%/config/routing_dev.php',    ),  
  'profiler' => array('only-exceptions' => false),)); 
// ...

import根鍵,類似于PHP的include聲明,確保主力配置文件(config.yml)被首先加載。本文件的剩余部分,用于調(diào)整默認(rèn)配置,強(qiáng)化日志功能和其他一些利于開(kāi)發(fā)環(huán)境的設(shè)定。

不管是prod還是test環(huán)境,都遵循相同的模型:每種環(huán)境先導(dǎo)入基本配置文件,然后調(diào)整其配置的值,以適合各自的特定環(huán)境。但這只是個(gè)約定,讓你可以復(fù)用配置文件中的大部分內(nèi)容,再針對(duì)不同環(huán)境來(lái)自定義局部配置。