我有一個包,該包必須在應用程序中包含該包時自動加載非名稱空間PHP文件。當作爲依賴項包含在Composer中時自動包含文件包
下面是我的一般目錄結構
packages/
+-- PackageA/
+-- Entities/
+-- Mappers/
+-- Services/
+-- composer.json
+-- constants.php
apps/appA/
+-- vendors/
+-- autoload/
+-- composer.json
apps/appB/
+-- vendors/
+-- composer.json
我已經試過了方向here作出PackageA
依賴於appA/
使用路徑庫。這部分工作順利。
PackageA
中的某些文件需要訪問常量,主要是文件路徑。這就是「constants.php」是,這些值都在程序上規定:
<?php
define('XML_REPO_PATH', __DIR__ . '/../blah/xml/');
// --etc--
我原本以爲用「文件」自動裝載機制「包/程序包A/composer.json」有:
{
...
"autoload": {
"psr-4": { ... }
"files": ["constants.php"]
}
}
但是,當PackageA
作爲依賴關係包含在appA
中時,這不需要constants.php。爲了解決這個問題,而不是把"files": [...]
在「包/程序包A/composer.json」,我把「應用程序/ appsA/composer.json」的自動加載部分如下:
"files": ["vendors/packages/PackageA/constants.php"]
這是不是很因爲每應用程序使用PackageA
將需要此。我認爲作曲家的本質可以讓我確保PackageA
中的文件可以訪問(即意味着包含)某些程序代碼,就像配置常量一樣。有沒有辦法做到這一點?
有沒有理由不能將命名空間添加到'constants.php'文件並使用常規自動加載? – Chris
@Chris因爲在php <5.6我不能連接類常量與其他常量,如'__DIR__' – jeremy