【发布时间】:2015-09-10 00:03:52
【问题描述】:
我是 Laravel 5 的新手,我希望有人向我解释一下 Laravel 的命名空间是如何工作的。
所以我在app/models/Variant.php 中有一个名为Variant 的类,我的代码如下所示
namespace App;
use Illuminate\Database\Eloquent\Model;
class Variant extends Model{
/*Some code*/
}
在我的route.php 我有:
use App\Variant;
/*calls Variant::all() some where in code*/
然后我收到一条错误消息,提示 Variant 未定义。但是,如果我将Variant.php 中的命名空间从namespace App 更改为namespace App\Models,并将route.php 中的命名空间从use App\Variant 更改为use App\Models\Variant,那么一切都会神奇地起作用。
这是为什么呢?它是否与 php 命名空间或 composer.json 中的 classmap 属性有关?我很迷茫。
【问题讨论】:
-
如果文件为
app/models/Variant.php,则命名空间为App\Models,use为App\Models\Variant。为什么你会认为应该是App和App\Variant? -
查看 PSR-4 autoloading standard 了解 laravel 的自动加载是如何工作的
标签: php laravel namespaces composer-php