2017-07-11 7 views
1

申し訳ありませんので、Laravelは過去数日間私にとって奇妙な動作をしています。カスタムクラスを参照するときのLaravelの不思議な振る舞い

私はLaravel Packageを開発し、次のディレクトリ構造を持っています:私のモデルファイルの一つの

vendor 
-student 
--myPackage 
---src 
----controllers 
----models 
----mail 
----routes 
----views 

例:

<?php 

namespace Student\myPackage\Model; 

use Illuminate\Database\Eloquent\Model as BaseModel; 

class MyClass extends BaseModel 
{ 
    // 
} 

を、私は私のコントローラでモデルファイルにアクセスしようとしています、このようにuse Student\myPackage\Model\MyClass as aMyClass。モデルディレクトリに複数のモデルがあり、すべてのモデルが同じ名前空間に属しています。Student\myPackage\Model

問題が発生したときに、次のエラーが発生しています。

FatalThrowableError

クラスの学生\ mypackageと\モデル\ MyClassのは、「私は唯一のモデルクラスでこのエラーを持って、それが中で参照されすぎたときにということでした

が見つかりませんコントローラ、私は、以下のように、ルートファイルでそれを参照する場合、問題はありません。

use Student\myPackage\Model\MyClass as aMyClass 

Route::get('/test', function() { 
    $g = new aMyClass; ($g); 
})->middleware('web'); 

モデルファイルを消去してからすべてを再コーディングしても、問題は解決しません。私のコントローラでは、使用されていたすべてのモデルクラスに対してuseステートメントを書き直しました。私は上記クラスのuseステートメントを何回も書き直したことを覚えていますが、うまくいきませんでした。とにかく今は動作していますが、今は別のクラス、すなわちmailableクラスと同じ問題があります。

問題がある可能性があります。クラスが参照されている順番や、見つからない名前空間に関することですか?


あなたは、あなたのモデルの名前空間を複数形を忘れたパッケージのComposer.json

"autoload": { 
    "psr-0": { 
     "Student\\myPackage\\": "src/" 
    } 
} 
+0

composer.jsonのオートロードビットも共有できますか? – apokryfos

+0

'' psr-0 ":{ " Student \\ MyPackage \\ ":" student/myPackage/src " }'これを試してみてください! –

+0

@HirenGohelいいえ、動作しませんでした。 – StudentX

答えて

0

このuse文で試してみてください:

use Student\myPackage\Models\MyClass as aMyClass; 

あなたのモデルがsrc/modelsであるStudent\myPackage\Models

0

あなたの名前空間が

Student\myPackage\Model\MyClass 

が変更に正しくないとして、作曲はあなたのモデルを名前空間ます

Student\myPackage\Models\MyClass 

これを確認したら、サービスプロバイダを登録します(エイリアスがあれば)。エイリアスを使用すると、時間と労力を節約できます。

関連する問題