2015-02-09 60 views
0

我想創建一個目錄來存儲自定義類,所以我創建目錄app/ArgumentClub/Transformers,並在該文件夾中的類UserTransformer.phppsr-4自動加載不在Laravel 4

然後我用自動加載:

"autoload": { 
    "classmap": [ 
     "app/commands", 
     "app/controllers", 
     "app/models", 
     "app/database/migrations", 
     "app/database/seeds", 
     "app/tests/TestCase.php" 
    ], 
    "psr-4": { 
     "ArgumentClub\\": "app/ArgumentClub" 
    } 
}, 

和運行composer dump-autoload。和命名空間是這樣的:

<?php namespace ArgumentClub\Transformers; 

class UserTransformer { 

我打電話給另一個類中這個類是這樣的:

<?php 

use Sorskod\Larasponse\Larasponse; 
use ArgumentClub\Transformers; 

class UsersController extends \BaseController { 

    ... 

    $transformed = $this->fractal->collection($users, new UserTransformer()); 

但我得到的錯誤:

Class 'UserTransformer' not found 

我在做什麼錯在這裏?

+0

你在哪裏打電話給班級?另外,'UserTransfomer'可能是您的問題中的拼寫錯誤,或者是代碼中的拼寫錯誤。 – MisterBla 2015-02-09 16:19:41

+0

對不起,這是一個錯字。我更新了我的問題以顯示我稱之爲UserTransformer類的位置。 – babbaggeii 2015-02-09 16:24:56

回答

0

您沒有正確使用use

use ArgumentClub\Transformers;導入Namespace,但不導入要使用的類。

要解決它,你可以擴展use聲明(應其)要像這樣:

use ArgumentClub\Transformers\UserTransformer 

或者你也可以命名空間添加變形金剛到您實例化UserTransformer類

$transformed = $this->fractal->collection($users, new Transformers\UserTransformer()); 

當你想實例化一個命名空間類而不用放入完整的命名空間時,你需要把完整的類路徑放在use語句中。