[英]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.