2017-11-20 17 views
0

벤더의 디렉토리 에 있지만 번들이 아닌 파일을 오버라이드하고 있습니다. 좀 더 구체적으로 심포니 2.7 symfony - 번들에없는 벤더 구성 요소를 오버라이드하는 방법

함께 일하고 있어요, 나는이 파일의 메소드 오버라이드 (override)하기 위해 노력하고있어 :

vendor/akeneo/pim-community-dev/src/Pim/Component/Catalog/Updater/ProductUpdater.php 

을 그리고 난 같은 파일에 그것을 할 싶습니다

src/MyApp/Component/Catalog/Updater/ProductUpdater.php 

발견 된 모든 문서는 번들 부분에 의존합니다. 이렇게 할 수 있습니까? 그렇다면 어떻게해야합니까?

감사합니다.

PS : D

을 : 회신하기 전에, 나는 또한 : 심포니에서 총 멍청한 놈이야 것을 고려하시기 바랍니다, 당신은 내 자신의 응용 프로그램 내부의 심포니 응용 프로그램이 있다는 것을 눈치 챘을 수도, 그것은 걱정하지 마세요 정상
+1

*는 * 걱정하지 마세요 정상 - 글쎄, 아니, 정말. 프로젝트의 종속성을 포함시키지 않고 프로젝트를 포크 화하려는 것처럼 들립니다. – iainn

+0

해당 파일은 앱에서 어떻게 사용됩니까? –

답변

0

작곡가를 사용하여 파일을 덮어 쓸 수있는 방법이 있습니다.

autoload-> psr-4 키 아래에서 composer.json을 추가 할 수 있습니다.

"autoload": { 
     "psr-4": { 
      "Pim\\Component\\Catalog\\Updater\\": "MyApp/Pim/Component/Catalog/Updater" 
     }, 

여기서 첫 번째 부분은 재정의하려는 파일의 네임 스페이스이고 두 번째 부분은 새 경로입니다.

새 패키지를 작성자에게 추가 할 때 약간의 문제가 발생할 수 있으므로 작곡가 덤프 - 자동로드 을 실행하여 자동로드 순서를 다시 작성해야합니다.

나는이 방법을 정말로 좋아하지 않지만 번들을 실제로 포킹하지 않고 번들에서 파일을 수정하는 데 몇 번이나 번거 로움을 덜어 주었고, 다른 도움이되지 않는다면 최후의 수단으로 사용할 수 있습니다. 여기에 작곡가 자동로드

https://getcomposer.org/doc/01-basic-usage.md#autoloading

희망이 도움에 대한

Alexandru Cosoi

+0

그것은 작동하지 않는 것 같아, 내가 뭔가 나쁜 일을했다고 생각해. "psr-4": { "Pim \\ Component \ Catalog \\ 업데이터 \ ProductUpdater \\": "src/MyApp/Bundle/QuantityPackBundle/Updater/ProductUpdater 내 composer.json에 추가했습니다. .php " } "src/MyApp/Bundle/QuantityPackBundle/Updater/"를 재정의에 대한 경로로 사용해 보았지만 작동하지 않았습니다. –

+0

나는 또한 내가 캐시 요법을 지웠다는 정확한 ... :) –

+0

작곡가 덤프 - autoload에 오류가 발생합니까? 또한 Pim \\ Component \\ Catalog \\ Updater \\ ProductUpdater \\ 재정의 할 클래스의 올바른 네임 스페이스입니까? 또한 src/MyApp/Bundle/QuantityPackBundle/Updater/ProductUpdater.pp가 재정의 할 이전 네임 스페이스를 사용하는지 확인하십시오. –