我有一個laravel 4.1應用程序,我在我的應用程序文件夾中創建了一個文件夾來存儲大部分邏輯。Laravel命名空間問題
/app/Acme/Models/
/app/Acme/Repositories/
這些是兩個主要文件夾。
在我的composer.json中,我有這個在自動加載,並做了一個轉儲運行。
"psr-4" : {
"Acme\\" : "app/Acme"
}
但是我越來越,我認爲是愚蠢的問題。例如我的Acme /型號/ 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;
?好像這樣的重複...
而在當我設置的namespace Acme/Repositories;
命名空間我的庫文件夾,我必須使用項目,如
use Acme\Models\Job as Job;
我的,有點失落!
裘德,我以爲因爲在Task.php我使用名稱空間Acme \ Models;我可以使用Job,因爲它在相同的範圍內......? – Wizzard
對不起,我在線上說他們在同一個NS,並假定你的意思是另一個類在Acme \ Repository NS。你是對的,它應該是相對的,但是你得到的錯誤是來自完全不同的問題......你只需要完全限定關係。例如$ this-> belongsTo('\ Acme \ Models \ Job'); – judereid