패키지가 응용 프로그램에 포함될 때 이름 공간이없는 PHP 파일을 자동으로로드해야하는 패키지가 있습니다.Composer에 종속물로 포함될 때 자동으로 파일에 패키지 포함
다음은 내가 appA/
에 대한 PackageA
종속성을 만드는 경로 저장소를 사용하도록 지시 here을 따랐습니다
packages/
+-- PackageA/
+-- Entities/
+-- Mappers/
+-- Services/
+-- composer.json
+-- constants.php
apps/appA/
+-- vendors/
+-- autoload/
+-- composer.json
apps/appB/
+-- vendors/
+-- composer.json
내 일반 디렉토리 구조입니다. 이 부분은 원활하게 작동합니다.
PackageA
내의 일부 파일은 주로 파일 경로에 액세스해야합니다. 이것은 "constants.php를위한"무엇이며,이 값은 절차 적 정의 :
<?php
define('XML_REPO_PATH', __DIR__ . '/../blah/xml/');
// --etc--
:
{
...
"autoload": {
"psr-4": { ... }
"files": ["constants.php"]
}
}
그러나 PackageA
이 appA
에 포함되어있는 경우 constants.php가 필요하지 않습니다.
"files": ["vendors/packages/PackageA/constants.php"]
이 매우되지 않습니다 : 대신 "패키지/PackageA/composer.json"에 "files": [...]
을 넣는,이 문제를 해결하려면, 나는 "응용 프로그램/appsA이/composer.json"의 자동로드 섹션에 다음을 넣어 바람직하기 때문에 마다 응용 프로그램을 사용하면 PackageA
이 필요합니다. 필자는 작곡가의 성격에 따라 PackageA
내의 파일이 구성 상수의 경우와 같이 특정 절차 코드에 액세스 할 수 있는지 (즉, 포함 할 의도가 있는지) 확인할 수 있다고 생각합니다. 이것을 할 수있는 방법이 있습니까?
'constants.php' 파일에 네임 스페이스를 추가 할 수없고 정기적 인 자동 로딩을 사용할 수없는 이유가 있습니까? – Chris
@Chris 왜냐하면 PHP <5.6에서 클래스 상수를'__DIR__'과 같은 다른 상수와 연결할 수 없기 때문입니다. – jeremy