문제는 잘 알려져 있습니다 : lib
클래스는 오토로더를 통해 독점적으로로드되며, 다음 이외의 클래스는 변경할 수 없습니다.
- lib보다 먼저 확인 된 codePool에 완전히 복사합니다.
- PSR-0 자동 로더 설치, 자동로드 클래스 맵을 지정한 다음 파일을 해당 폴더 구조로 완전히 복사합니다. [내 현재 솔루션]
잠재적으로 이러한 파일 중 많은 부분을 다루고 싶기 때문에 어려운 위치에 있습니다. 그러나 저장소의 안정성 및 업그레이드 가능성을 위해 전체 라이브러리 클래스를 복사하고 싶지 않습니다.
분명히이 문제에 대한 잠재적 인 해결책이 있지만 모두 고유 한 문제 세트가 있습니다.
- 이동 AOP의 경로와 같은 PHP 기반의 라이브러리를 사용하는 이동! AOP : 마지막으로 Magento 클래스를 작곡가 오토로더가로드 할 수 있어야합니다. Flyingmana는 이 분야에서 몇 가지 작업 을 수행 했지만 프로덕션 사용 준비가되지 않았으며 내 요구가 더 즉각적입니다. 또한 확장으로 제공하고 싶습니다. 더 많은 작곡가 설정이 필요합니다.
- AOP 경로로 이동하여 기본 PHP 확장을 사용하십시오 . 아마도이 시점에서 가장 유리할 것입니다. 그러나 HHVM에서 작동하지 않는다는 것은 말할 것도없이 별도의 확장을 설치해야합니다.
- PHP의 classkit 및 / 또는 runkit 사용 : 다른 기본 PHP 확장이므로 위와 동일한 문제가 있습니다.
- 호출 사이트에 내 네임 스페이스 (
\Danslo\Varien_X
) 버전 을 사용하도록 패치 한 다음 원본 (\Varien_X
) 에서 확장하십시오. 패치 할 호출 사이트가 너무 많으므로 재 작성이 거의 필요하지 않습니다. 옵션이 아닙니다. 내 자신의 롤 : 가능해야합니다 :
- 내 오토로더를 작성하십시오.
- 원본 클래스를 별도의 폴더 (
{root_dir}/var/tmp
)에 복사하여 감싸십시오namespace \Magento { < original contents > }
. - 그 파일을 포함 시키십시오.
- 수정 된 수업 포함
OriginalClass extends Magento\OriginalClass {}
동적 코드 생성, 정규식, 다시 작성된 클래스를로드하기위한 약간의 오버 헤드가 있습니다. 그러나 나는이 시점에서 ~ 100 줄을 터치 / 추가하려고 할 때 ~ 5000 줄의 코드를 복사하는 것을 능가 할 것이라고 거의 확신합니다.
나는 많이 묻는다는 것을 알고 있지만이 문제를 해결하는 데 도움이되는 현대적이고 비교적 깨끗한 것이 있습니까?