私は Laravel 4 で奇妙な経験をしています。時間を無駄にしないために、この問題に飛び込みます。さて、名前空間をディレクトリに整理しているので、見逃しているか何かがあるかもしれませんが、チェックしてください。私は助けが必要です。よし、コードを見せよう。
File: app/services/profile/profile.php
<?php namespace Services\Profile;
use Services\Repo\ProfileRepoInterface as ProfileInterface;
class Profile
{
protected $profile;
function __construct(ProfileInterface $profile)
{
$this->profile = $profile;
}
}
File: app/services/repo/ProfileRepoInterface.php
<?php
namespace Services\Repo;
interface ProfileRepoInterface{
public function all();
}
> File: app/services/repo/EloquentProfileRepository.php
> <?php
> namespace Services\Repo;
>
> class EloquentProfileRepository implements ProfileRepoInterface
> {
> public function all()
> {
> return 'Returned All';
> }
> }
routes.php ファイルの先頭にインターフェイスをバインドしました
File: routes.php
App::bind('Services\Repo\ProfileRepoInterface','Services\Repo\EloquentProfileRepository');
Route::get('/posts',function()
{
$pro = new Services\Profile\Profile;
var_dump($pro);
});
composer.json ファイルのクラスマップに「app/services」を追加しようとしましたが、うまくいきませんでした。ClassLoader の global.php ファイルに追加しようとしても、まだ機能しません。私が間違ったことをしたかもしれませんか?エラーが発生します。
Services\Profile\Profile::__construct() に渡される引数 1 は、Services\Repo\ProfileRepoInterface のインスタンスである必要があり、何も指定されず、20 行目の E:\server\www\laravel\app\routes.php で呼び出され、定義されている必要があります