psr-4自动加载在Laravel 4中不起作用

时间:2015-02-09 16:16:16

标签: php laravel laravel-4 psr-4

我正在尝试创建一个存储自定义类的目录,因此我在该文件夹中创建了目录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

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

您没有正确使用use

use ArgumentClub\Transformers;导入Namespace,但不导入您要使用的类。

要解决此问题,您可以将use语句(您应该)扩展为:

use ArgumentClub\Transformers\UserTransformer

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

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

如果要在不放置完整命名空间的情况下实例化命名空间类,则需要将完整的类路径放在use语句中。