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