0

我正在尝试创建一个目录来存储自定义类,所以我在该文件夹中创建了目录app/ArgumentClub/Transformers和类UserTransformer.php

然后我自动加载:

"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

我在这里做错了什么?

4

1 回答 1

0

你没有use正确使用。

use ArgumentClub\Transformers;导入该命名空间,但不导入您要使用的类。

要修复它,您可以将use语句(您应该)扩展为:

use ArgumentClub\Transformers\UserTransformer

或者您可以将 Transformers 命名空间添加到您实例化 UserTransformer 类的位置

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

当你想实例化一个命名空间类而不放置完整的命名空间时,你需要在use语句中放置完整的类路径。

于 2015-02-09T16:30:12.297 回答