수색…
소개
공식 문서에없는 Symfony 애플리케이션 구성을위한 예제 및 우수 사례.
디렉토리의 모든 구성 파일 포함
잠시 후 config.yml에 많은 구성 항목이 생깁니다. 구성을 여러 파일로 분할하면 구성을 더 쉽게 읽을 수 있습니다. 다음과 같이 디렉토리의 모든 파일을 쉽게 포함 할 수 있습니다.
config.yml :
imports:
- { resource: parameters.yml }
- { resource: "includes/" }
includes
디렉토리에서 doctrine.yml, swiftmailer.yml 등을 넣을 수 있습니다.
서비스 ID로 정규화 된 클래스 이름 (FQCN) 사용
많은 예에서 'acme.demo.service.id'와 같은 서비스 ID를 찾을 수 있습니다 (점이있는 문자열). services.yml
은 다음과 같습니다.
services:
acme.demo.service.id:
class: Acme\DemoBundle\Services\DemoService
arguments: ["@doctrine.orm.default_entity_manager", "@cache"]
컨트롤러에서이 서비스를 사용할 수 있습니다.
$service = $this->get('acme.demo.service.id');
이 문제는 없지만 서비스 ID로 FQCN (Fully Qualified Class Name)을 사용할 수 있습니다.
services:
Acme\DemoBundle\Services\DemoService:
class: Acme\DemoBundle\Services\DemoService
arguments: ["@doctrine.orm.default_entity_manager", "@cache"]
컨트롤러에서 다음과 같이 사용할 수 있습니다.
use Acme\DemoBundle\Services\DemoService;
// ..
$this->get(DemoService::class);
이렇게하면 코드를 더 잘 이해할 수 있습니다. 많은 경우 클래스 이름이 아닌 서비스 ID를 갖는 것은 의미가 없습니다.
Symfony 3.3에서 서비스 ID가 FQCN 인 경우에도 class
속성을 제거 할 수 있습니다.
HTTP 인터페이스가 필요하지 않습니까?
애플리케이션에 HTTP 인터페이스 (예 : 콘솔 전용 앱)가 필요하지 않은 경우 최소한 Twig
및 SensioFrameworkExtra
를 비활성화 SensioFrameworkExtra
다음 행을 주석으로 처리하십시오.
app / AppKernel.php
$bundles = [
//...
// new Symfony\Bundle\TwigBundle\TwigBundle(),
// new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
//...
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
//...
// $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
app / config / config.yml
framework:
# ...
# router:
# resource: '%kernel.root_dir%/config/routing.yml'
# strict_requirements: ~
# ...
# templating:
# engines: ['twig']
#...
#twig:
# debug: '%kernel.debug%'
# strict_variables: '%kernel.debug%'
app / config / config_dev.yml
#framework:
# router:
# resource: '%kernel.root_dir%/config/routing_dev.yml'
# strict_requirements: true
# profiler: { only_exceptions: false }
#web_profiler:
# toolbar: true
# intercept_redirects: false
composer.json 에서 관련 공급 업체 요구 사항을 제거 할 수도 있습니다.
"sensio/framework-extra-bundle": "x.x.x",
"twig/twig": "x.x"
이 경우 Symfony를 사용하는 것은 논쟁의 여지가 있지만 적어도 일시적인 것은 될 수 있습니다.