Laravel 5 App命名空间

时间:2015-03-11 10:05:02

标签: php laravel namespaces eloquent laravel-5

我是Laravel 5的新手。

我在Homestead中启动并运行原始应用程序。当我编写一个简单的UserTableSeeder并尝试使用artisan为MYSQL数据库播种时,会弹出一个错误:“找不到类用户”。

好吧,我没有更改“app / User.php”文件中的任何内容,并且在我将名称空间 App 添加到播种机代码后,

即来自

User::create(array(..));

App\User::create(array(..));
播种工作得很好。

当我尝试使用

时发生了同样的事情
User::all();

或“routes.php”中的其他Eloquent查询操作。只有当我添加名称空间 App \ 时才能解决问题。

我尝试过 composer dump-autoload ,我确保应用名称和“composer.json”文件与Laravel 5中的原始代码完全相同。

每当我们想在Laravel 5中使用模型时,是否必须添加命名空间 App /

我想我可能有些错误,因为在Laravel 4中我们不必在这些情况下添加命名空间 App

1 个答案:

答案 0 :(得分:5)

在Laravel 5中,默认情况下app目录在App下命名。如果您查看composer.json,您会看到app目录已设置为psr-4自动加载:

"psr-4": {
    "App\\": "app/"
},

如果要从那里或在子目录中使用类,则需要包含命名空间。如果您只想按原样引用类名,也可以use。例如:

应用/命名空间/ SomeClass.php

<?php namespace App\Namespace;

use App\User;

class SomeClass {

    public function someMethod()
    {
        $user = User::find(1);
    }

}