php - Laravel 在命名空间中找不到类

标签 php laravel namespaces

问题。 当我从另一个命名空间(在我的 Controller 内)实例化一个类对象时,我收到此错误:

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

有什么想法可能是错误的吗?

App\Http\Controllers\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);
    }
} }

App\Library\Transformers\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。

最佳答案

LessonsController

Transformer

您已在不具有可见性的类上设置了可见性。

LessonTransformer

另请注意,您没有在 LessonTransformer.php 上附加 .php。这就是我们所说的“大问题”。

关于php - Laravel 在命名空间中找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37898254/

相关文章:

php - Laravel Voyager 属于多个关系显示 "No results found"

php - 函数 simplexml_load_string() 上的 XML_PARSE_HUGE

javascript - 如何动态添加表格行并按行计算

php - 在 PHP 中重置命名空间?

php - 使用 session Symfony 时保存元素

php - 无论我如何尝试都没有错误报告

laravel - 未捕获( promise )TypeError : initialData is null - my components are wrapped in a single div but still getting the error

php - Laravel 邮件通知

xml - 改变元素的命名空间

xml - 关于 Beans 的 Spring p 命名空间的共识是什么?