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


psr-4 autoloading not working in Laravel 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

我在这里做错了什么?

您没有正确使用use

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

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

use ArgumentClub'Transformers'UserTransformer

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

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

当您想实例化一个有名称空间的类而不放入完整的名称空间时,您需要将完整的类路径放入use语句中。