수색…


소개

공식 문서에없는 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 인터페이스 (예 : 콘솔 전용 앱)가 필요하지 않은 경우 최소한 TwigSensioFrameworkExtra 를 비활성화 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를 사용하는 것은 논쟁의 여지가 있지만 적어도 일시적인 것은 될 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow