2016-06-17 12 views
2

좋아요, 그래서 Symfony에서 사용하고 싶은 라이브러리를 가지고 있습니다. yml 파일에 저장된 구성입니다.내 자신의 라이브러리에 대한 설정 파일을 어디에두고 symfony 서비스에 경로를 삽입해야합니까?

현재 yml 파일은 src/AppBundle/Resources/config입니다. 이 config 파일의 경로를 서비스에 주입해야합니다. 이것에 대해 갈 수있는 올바른 방법은 아니다 나는이 느낌

service_name: class: My\Library\Service arguments: ["../src/AppBundle/Resources/config/my_library_config.yml"]

- : 순간 나는 단순히 하드 services.yml의 설정 파일에 상대 경로를 코딩 한?

+0

나를 위해 합리적인 것 같습니다. 라이브러리 소비자는 구성이있는 곳에서 'My \ Library \ Service'를 말해야합니다. 물론'My \ Library \ Service'가 합당한 기본 가정을 만들 수 있습니다. 따라서 절대적으로 상대 참조를 사용할 수있는 결정 지점에 대한 응용 프로그램을 남겨 둡니다. – bishop

+1

"% kernel.root_dir %/../src/AppBundle/Resources/config/my_library_config.yml"또한 트릭을 수행해야합니다. 다른 app/config 파일을 보면 절대 경로를 만드는 데 자주 사용되는 것을 볼 수 있습니다. 의존성 삽입 확장 프로그램 내에서 app_bundle_dir 매개 변수를 정의 할 수도 있습니다. 그러면 앱과 번들 간의 연결이 제거됩니다. – Cerad

+0

Symfony에서 라이브러리로의 다리 역할을하는 간단한 독립 실행 형 번들을 사용할 수 있습니다. 그런 다음 symfony의 일반적인 설정 처리를 사용하여 필요한 모든 것을 서비스에 주입 할 수 있습니다. https://github.com/cwd/easyname-bridge-bundle을 참조하면 제 3 자 라이브러리에 매우 간단하게 연결할 수 있습니다. – Rufinus

답변

1

Extension 클래스를 사용하여 경로를 생성하고 컨테이너를 컴파일 할 때 인수를 바꿀 수 있습니다.

그러나 Symfony는 이미 configuration processing method입니다. 확장 옵션은 설정이 필요없는 경우 쓸모가 없으므로 재사용하지 않으려면 %kernel.root_dir%을 사용하여 올바른 경로를 추가하십시오.

인 경우 재사용 할 예정이므로 구성을 고정시킬 필요가 없습니다. 이 경우 사용자가 번들/옵션을 직접 구성 할 수 있도록 구성 옵션을 만드는 것이 좋습니다.

자신 만의 구성을 만들고 싶은 실제 이유가 있습니까? 단순히 매개 변수를 정의하고 전체 구성을 매개 변수에 저장하면 사용자가 자신의 구성 파일을 작성하고 구문 분석하지 못하게하고 매개 변수 시스템의 이점을 누릴 수 있습니다.

+0

Symfony에서 사용하기 전에 제가 원래 라이브러리를 만든 방식과 다른 이유는 없습니다. 그래서 내가 그것 아래에 여러 항목을 가진 매개 변수를 가지고 매개 변수를 삽입하면, 나는 연관 배열로 얻을 수 있을까요? – rgvcorley

+1

yaml은 단순히 데이터 배열로 변환되며 중첩 배열이 지원됩니다. –