繁体   English   中英

Laravel名称空间问题

[英]Laravel namespace issue

我有一个laravel 4.1应用程序,并且在我的应用程序文件夹中创建了一个文件夹来存储大多数逻辑。

/app/Acme/Models/
/app/Acme/Repositories/

这是两个主要文件夹。

在我的composer.json文件中,我已将其自动加载,并进行了转储。

    "psr-4" : {
            "Acme\\" : "app/Acme"
    }

但是我得到了,我认为是愚蠢的问题。 例如我的Acme / Models / Task.php具有以下内容

<?php
namespace Acme\Models;

class Task extends \Eloquent {

    public function job()
    {
        return $this->belongsTo('Job');
    }

}

但是当我运行它时,我得到一个错误

Fatal error: Class 'Task' not found in vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php on line 780

在我的Job.php中,文件顶部具有相同的名称空间。

我是否必须手动导入/使用具有相同名称空间的对象? use Acme/Models/Job as Job; 好像是重复的...

并且在我的Repositories文件夹中,当我设置名称namespace Acme/Repositories;namespace Acme/Repositories; ,我必须使用类似

use Acme\\Models\\Job as Job;

我是,有点迷路!

命名空间是相对的,因此您无需添加使用即可直接引用同一命名空间中的类。

您得到的错误是因为您需要完全限定与命名空间模型的关系,以便雄辩地知道在哪里找到它们,例如

$this->belongsTo('\Acme\Models\Jobs');

对于存储库名称空间,您将需要按照建议在文件中添加一个use语句,或引用完全限定的名称空间,例如new \\ Acme \\ Models \\ Job();。

附带一提,我知道PHPStorm(并且我确信其他IDE)会为您注入名称空间,这非常有用,并且每次引用一个类时,您不必编写使用或使用完整的名称空间-值得签出。

编辑:抱歉,我第一次没有正确阅读问题-更新了我的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM