在Laravel 5中获取App Namespace

时间:2015-03-28 15:44:35

标签: namespaces laravel-5

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

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

所以我决定从composer.json文件

获取这个名称空间
   "psr-4": {
        "AppNamespace\\": "app/"
    }

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

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

2 个答案:

答案 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 __ 用于其方法中任何类的名称空间。