我正在为Laravel 5开发一个包,但如果用户更改了应用程序的默认命名空间,则按命令php artisan app:name Test
打包将无法正常工作。包需要知道App的命名空间才能正常工作。
根据我的理解,Laravel 5不会在任何核心类中提供应用程序的命名空间
所以我决定从composer.json
文件
"psr-4": {
"AppNamespace\\": "app/"
}
或要求用户在一种配置文件中提供应用程序的命名空间。
问题:
请告诉我,如果我对Laravel的推定没有提供这是正确的,如果它是正确的,请让我知道哪种方式是最好的方法namespace
或者你有什么更好的建议?
答案 0 :(得分:4)
您可以使用包含在Laravel核心中的以下特征来获取应用程序的命名空间:
Illuminate\Console\AppNamespaceDetectorTrait
Laravel在AppNameCommand
中使用此特征在更新之前获取当前命名空间。
一个例子:
class MyClass {
use \Illuminate\Console\AppNamespaceDetectorTrait;
public function getNamespace()
{
return $this->getAppNamespace();
}
}
您可以阅读有关特征here的更多信息。
答案 1 :(得分:0)
选中此项,可能对您有帮助https://www.php.net/manual/en/language.namespaces.nsconstants.php
您可以将魔术关键字_ _NAMESPACE __ 用于其方法中任何类的名称空间。