2016-06-18 9 views
1

問題。 私は(私のコントローラ内の)別の名前空間からクラスオブジェクトをインスタンス化するとき、私はこのエラーを取得:Laravelが名前空間でクラスを見つけることができません

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

任意のアイデア間違っている可能性が何?

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

のApp \ライブラリ\トランスフォーマー\ 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'] 
     ]; 
    } 
} 

のApp \ライブラリ\トランスフォーマー\トランスフォーマー

<?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を使用しています。

+0

あなたがしていることがわからない限り、作曲者ファイルを変更しないでください。変更を元に戻してください。 – Jonathan

+0

Okey。私はそれらの変更を元に戻そうとしましたが、まだ変更はありませんでした。 – Olof84

+0

あなたのコンストラクタにわずかなタイプミスがあります。 'LessonTransformers'に' s'がついていてはいけませんか?しかし、これがエラーを説明するとは思わない。 – Jonathan

答えて

1

LessonsController

Transformer

あなたは、視認性をとらないクラスに可視性を設定していました。

LessonTransformer

はまた、あなたがLessonTransformer.php.phpを追加していないことに注意してください。これを「大きな問題」と呼んでいます。

+0

ありがとう、あなたは私の一日を救った! :)あなたはそれらのエラーを見つけるために使用しているアドオン/プログラムを尋ねてもよろしいですか? – Olof84

+0

名前空間がフォルダパスとまったく同じであるとLaravelが要求するようです。または私は間違っていますか? – Olof84

+0

ようこそ。私はちょうど提供されたlaravelエラーを使用していますが、私は私の目の前にコードを持っているときにデバッグするのは簡単です誰もあなたのファイルの名前を確認するように指示する可能性はありません。あなたが見つけることができるくらい多くの情報として、名前空間について調べる - それは私が最初にグリップに得るためにいくつかの読み込みが必要でした。コードには他にも問題がありますが、主なものはファイルに '.php'がありません – Jonathan

関連する問題