Laravel无法在命名空间中找到类

时间:2016-06-18 14:50:12

标签: php laravel namespaces

问题。 当我从另一个命名空间(在我的控制器中)实例化一个类对象时,我得到了这个错误:

ReflectionException in Container.php line 794:
Class App\Library\Transformers\LessonTransformer does not exist

任何想法都可能出错?

应用\ HTTP \控制器\ LessonsController.php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Library\Transformers\Transformer;
use App\Library\Transformers\LessonTransformer;
use App\Http\Requests;
use App\Lesson;
class LessonsController extends Controller{
protected $lessonTransformer;

function __construct(LessonTransformers $lessonTransformer)
{
    $this->lessonTransformer = $lessonTransformer;
}

//
public function index()
{
    $lessons =  Lesson::all();

    return Response()->json([
        'data' => $this->lessonTransformer->transformCollection($lessons->all() )
    ], 200);
}

public function show($id)
{
    $lesson = Lesson::find($id);

    if ( ! $lesson )
    {
        return Response()->json([
            'error' => [
                'message' => 'Lesson does not exist'
            ]
        ], 404);
    }
} }

应用\库\变压器\ LessonTransformer

<?php
namespace App\Library\Transformers;

public class LessonTransformer extends Transformer {

    public function transform($lesson)
    {
        return [
            'title'     => $lesson['title'],
            'body'      => $lesson['body'],
            'active'    => (boolean) $lesson['some_bool']
        ];
    }
}

应用\库\变压器\变压器

<?php
namespace App\Library\Transformers;

public abstract class Transformer {
    public function transformCollection(array $item)
    {
        return array_map([$this, 'transform'], $item->toArray());
    }

    public abstract function transform($item);
}

Composer.json

我也试过像这样改变composer.json,但没有成功:

"autoload": {
        "classmap": [
            "database",
            "App/Library"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php",
            "App/Library"
        ]
    },

旁注即可。 我正在使用Laravel 5.2。

1 个答案:

答案 0 :(得分:1)

LessonsController

Transformer

您已设置了无法查看的类的可见性。

LessonTransformer

另请注意,您未.php附加LessonTransformer.php。这就是我们所说的“一个大问题”。