작곡가의 오토로더를 마 젠토에 통합


19

따라서 작곡가훌륭하고 작곡가의 packagist 저장소에는 Magento 확장을 쉽게 작성할 수 있는 많은 코드가 있습니다.

내가 겪고있는 문제는 자동 로딩을 설정하는 가장 좋은 방법입니다.

기본적으로 composer 패키지는 / vendor에 설치되며 해당 디렉토리의 내부에는 composer 관리 패키지의 클래스 로딩을 설정하는 autoload.php 파일이 있습니다.

그렇다면 compoer의 '/vendor/autoload.php'파일을 요구하는 가장 좋은 방법은 무엇입니까? 이것은 웹 스토어와 쉘 스크립트 모두에서 작동해야합니다. require_once를 수행하기 위해 탭할 수있는 관찰자 이벤트가 있습니까?

건배!


github.com/magento-hackathon/magento-composer-installer 가 여기에 도움이 된다면 실마리가 없습니다 . 나는 그것이 관련이 없다고 생각합니다. 필자는 작곡가와 함께 비 Magento 패키지를 설치하려고하고 기본적으로 lib /
Alex

예, 원하는 경우 composer를 lib에 설치하도록 설정할 수 있지만 가능하면 composer libs / mage libs를 별도로 유지하고 싶습니다. 또한 작곡가에서는 Mage 자동 로더 메커니즘에 맞지 않는 클래스 매핑 자동 로딩과 같은 깔끔한 것들을 가질 수 있습니다.
Aaron Bonner

1
+1. Mage.php의 초기 이벤트 디스패치 중 하나가 트릭을 수행 해야하는 것 같습니다 ...?
kalenjordan

나는 이것이 오래 전에 답변되었다는 것을 알고 있지만, 또 다른 옵션은 index.php 파일에 벤더 자동 로더를 포함시키는 것입니다 (이전 require_once $mageFilename에 호출됩니다). 이것은 클라이언트 설치에 적합하며 파일을 다시 쓰지 않아도됩니다.
SwiftOtter의 Joseph

핵심 파일 인 index.php를 해킹하고 있습니다. 업그레이드 할 때 해당 코드 줄을 index.php에 추가했음을 기억해야합니다.
Aaron Bonner

답변:


15

Magento 오토로더는에 등록되어 Mage.php있습니다.

자체 모듈에서이 작업을 수행하려면 가능한 첫 번째 이벤트를 가져 와서 자동 로더가 필요합니다.

Alan의 분석 에 따르면 이 경우는 resource_get_tablename되지만이 이벤트를 한 번만 처리해야합니다.

빠르고 더러운 솔루션은 Mage.php파일의 시작 부분 을 패치 하는 것이지만 이것이 핵심을 해킹하는 것입니다.

또한 Magento-PSR-0-Autoloader 모듈이 있으며 구성을 통해 작곡가 자동 로딩을 추가 할 수 있습니다. resource_get_tablename이벤트를 사용하는 기본 구현입니다 .


고마워 알렉스, 완벽 해 mage.php를 패치했지만 프로덕션에 넣기를 원하지 않았습니다. resource_get_tablename을 관찰하면 정상적으로 작동했습니다!
Aaron Bonner

4
Vinai는 Varien_Autoload를 로컬 코드 풀에 넣고 필요한 코드를 거기에 배치하여 값 비싼 옵저버 이벤트를 피하고 핵심 코드를 직접 패치 할 것을 제안했습니다.
Aaron Bonner

1
"단순 위의 예제의 구현 : github.com/thijssnowcountry/magento1_composer_loader "- @ user2594875
파비안 Schmengler
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.