Symfony(및 환경) 구성
Symfony 프로그램은 "모든 기능과 가능성을 제시하는" 번들 세트로 구성됩니다. 각 번들은 YAML, XML 또는 PHP 형식의 구성 파일을 통해 사용자 정의할 수 있습니다. 기본 기본 구성 파일은 app/config/
디렉터리에 있으며 config.yml
, config.xml
또는 config일 수 있습니다. .php
(기본 설정에 따라): app/config/
目录下,它可以是config.yml
、config.xml
或config.php
,根据你的偏好而定:
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%',)); // ...
在下面的环境小节中,你将会明确每种格式的文件是如何被加载的。
每一个根节点,比如framework
或twig
,定义了相应bundle的配置信息。例如,framework
键所定义的,是用于Symfony核心的FrameworkBundle之配置信息,包括路由配置、模板配置以及其他内核配置。
现在,毋须担心每个根节点下的特定配置选项。配置文件预装了一些有意义的默认配置。当你详细研读和探索Symfony每一个部分时,你将会掌握每一个功能的特定配置选项之意义。
默认配置信息的剥离 ¶
你可以剥离出指定bundle的YAML格式的默认配置信息,通过命令行的config:dump-reference
$ php bin/console config:dump-reference FrameworkBundle
$ php bin/console config:dump-reference framework
localhost/app_dev.php/random/10아래 환경 섹션에서 각 형식의 파일이 로드되는 방법을 지정합니다.
framework
또는 twig
와 같은 각 루트 노드는 해당 번들의 구성 정보를 정의합니다. 예를 들어 framework
키는 라우팅 구성, 템플릿 구성 및 기타 커널 구성을 포함하여 Symfony 코어에서 사용되는 FrameworkBundle의 구성 정보를 정의합니다. - 🎜YAML: 간단하고 명확하며 읽기 쉽습니다. (YAML 구성 요소를 통해 자세히 알아보기) 🎜
- 🎜XML: 때로는 YAML보다 더 강력하며 IDE 코드 자동 완성을 지원합니다. 🎜
- 🎜PHP: 매우 강력하지만 표준 구성 형식보다 가독성이 떨어집니다. 🎜
기본 구성 정보 제거 ¶
🎜명령줄config:dump-를 통해 지정된 번들의 YAML 형식으로 기본 구성 정보를 제거할 수 있습니다. 참조
명령. 다음은 FrameworkBundle의 기본 구성 정보를 제거하는 예입니다. 🎜localhost/app_dev.php/random/10🎜확장 개인 가명(구성 파일의 루트 노드)도 사용할 수 있습니다. 🎜
$ php bin/console cache:clear --env=prod --no-debug🎜🎜🎜쿡북 문서 로드 방법을 참조하세요. 번들에 있는 서비스의 구성 정보, "자신의 번들에 구성 정보 추가"에서 관련 콘텐츠를 가져옵니다. 🎜🎜🎜
환경 ¶
프로그램 세트는 여러 환경에서 실행될 수 있습니다. 다양한 환경은 동일한 PHP 코드(프런트엔드 컨트롤러 제외)를 공유하지만 다른 구성 파일을 사용합니다. 예를 들어 dev
환경에서는 경고 및 오류 수준 로그가 기록되지만 prod
환경에서는 오류 메시지만 기록됩니다. dev
환경에서 일부 파일은 개발자의 편의를 위해 요청이 있을 때마다 다시 작성되지만 prod
환경에 도착하면 캐시됩니다. 모든 환경은 동일한 시스템에 공존하고 동일한 프로그램을 실행합니다. dev
环境下将记录警告和错误级别的日志,但在prod
环境就只记录错误信息。在dev
环境下,有些文件在每一次请求中都被重新构建(为了方便开发者),但到了prod
环境时却被缓存起来。所有的环境都在同一机器下共存,并且执行相同的程序。
一般来说,一个Symfony项目有三种环境(dev
、test
和prod
),但创建一种新的环境是简单的。你可以查看程序在不同环境下的执行效果,只需在浏览器中切换前端控制器。要看dev
环境,访问程序的开发版front controller:
$kernel = new AppKernel('prod', false);
如果你要看看程序在生产环境下的执行情况,换上prod
版前端控制器:
// app/AppKernel.phppublic function registerContainerConfiguration(LoaderInterface $loader){ $loader->load( __DIR__.'/config/config_'.$this->getEnvironment().'.yml' );}
prod
环境专为速度优化,配置信息、路由和Twig模板都被编译成原生php类并缓存起来。当需要查看prod
环境下的改变时,你需要清除这些缓存文件然后重构它们:
YAML:# app/config/config_dev.ymlimports: - { resource: config.yml }framework: router: { resource: "%kernel.root_dir%/config/routing_dev.yml" } profiler: { only_exceptions: false } # ...
如果你打开web/app.php
文件,你可以看到prod
环境被显式地配置好了:
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>
你可以为一个新环境创建一个新的前端控制器,拷贝上面这行代码并将prod
换成别的值。
test
环境被用于自动测试(automatic testing),不能通过浏览器直接访问。参考“框架指南”中的测试章节了解更多。
当使用server:run
命令来启动server时,localhost:8000/
dev
, test
및 prod
)이 있지만 새로운 환경을 만드는 것은 간단합니다. 브라우저에서 프런트엔드 컨트롤러를 전환하여 다양한 환경에서 프로그램이 어떻게 작동하는지 확인할 수 있습니다. dev
환경을 보려면 프로그램 프론트 컨트롤러의 개발 버전을 방문하세요: 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),)); // ...
prod로 변경하세요. code> 버전의 프런트 엔드 제어 서버:
🎜rrreee🎜prod
환경은 속도, 구성 정보, 라우팅에 최적화되어 있으며 Twig 템플릿은 기본 PHP 클래스로 컴파일되고 캐시됩니다. prod
환경의 변경 사항을 확인해야 하는 경우 다음 캐시 파일을 지우고 재구성해야 합니다. 🎜rrreee🎜web/app.php
파일을 열면 prod
환경이 명시적으로 구성되어 있음을 확인할 수 있습니다. 🎜rrreee🎜 새 환경의 새 전면 컨트롤러인 경우 위의 코드 줄을 복사하고 prod
를 다른 값으로 바꾸세요. 🎜🎜🎜🎜test
환경은 자동 테스트에 사용되며 브라우저 액세스를 직접 통과할 수 없습니다. 자세한 내용은 프레임워크 가이드의 테스트 장을 참조하세요. 🎜🎜🎜🎜server:run
명령을 사용하여 서버를 시작하는 경우 localhost:8000/
는 프로그램에서 개발 프런트엔드 컨트롤러를 사용합니다. 🎜🎜🎜환경 구성 ¶
AppKernel
클래스는 지정한 구성 파일을 로드하는 역할을 담당합니다. AppKernel
类负责加载你指定的配置文件:
rrreee你已经知道.yml
后缀可以被改为.xml
或.php
,如果你愿意使用XML或PHP来完成配置的话。注意每种环境加载的是它自己的配置文件。看一下dev
环境下的配置文件:
rrreeerrreeerrreeeimport
根键,类似于PHP的include
声明,确保主力配置文件(config.yml
)被首先加载。本文件的剩余部分,用于调整默认配置,强化日志功能和其他一些利于开发环境的设定。
不管是prod
还是test
rrreee
.yml
접미사가 다음으로 변경될 수 있다는 것을 이미 알고 계십니다. .xml
또는 .php
(XML 또는 PHP를 사용하여 구성을 완료하려는 경우) 각 환경은 자체 구성 파일을 로드합니다. dev
환경에서 구성 파일을 살펴보세요. rrreeerrreeerrreee
import
루트 키는 PHP의 include
문과 유사하며 다음을 보장합니다. 기본 구성 파일( config.yml
)이 먼저 로드됩니다. 이 파일의 나머지 부분은 기본 구성을 조정하고, 로깅 기능을 향상시키며, 개발 환경에 유용한 기타 설정을 수행하는 데 사용됩니다.
🎜prod
환경이든 test
환경이든 모두 동일한 모델을 따릅니다. 각 환경은 먼저 기본 구성 파일을 가져온 다음 구성 값을 조정합니다. 특정 환경에 맞게. 그러나 이는 단지 규칙일 뿐이므로 구성 파일의 대부분의 콘텐츠를 재사용하고 다양한 환경에 맞게 로컬 구성을 사용자 지정할 수 있습니다. 🎜🎜🎜🎜🎜