在Laravel 5中获取App Namespace

Sia*_*osh 5 namespaces laravel-5

我正在为Laravel 5开发一个包,但是如果用户更改了应用程序的默认命名空间,则package by命令php artisan app:name Test将无法正常工作.包需要知道App的命名空间才能正常工作.

根据我的理解,Laravel 5不会在其任何核心类中提供应用程序的命名空间

所以我决定从composer.json文件中获取这个命名空间

   "psr-4": {
        "AppNamespace\\": "app/"
    }
Run Code Online (Sandbox Code Playgroud)

或者要求用户在一种配置文件中提供应用程序的命名空间.

问题:请告诉我,如果我对Laravel的推定没有提供这是正确的,如果它是正确的,请告诉我哪种方式是最好的方式来获得这个namespace或者你有什么更好的建议?

Pan*_*lis 5

您可以使用 Laravel 核心中包含的以下特征来获取应用程序的命名空间:

Illuminate\Console\AppNamespaceDetectorTrait
Run Code Online (Sandbox Code Playgroud)

Laravel 在更新之前使用此特征来AppNameCommand获取当前命名空间。

一个例子:

class MyClass {

    use \Illuminate\Console\AppNamespaceDetectorTrait;

    public function getNamespace()
    {
        return $this->getAppNamespace();
    }

}
Run Code Online (Sandbox Code Playgroud)

您可以在此处阅读有关特征的更多信息。

  • 不需要扩展类。当您导入特征时,您可以调用该特征内的任何方法。 (2认同)