Interfejs docelowy Laravel 4 nie jest natychmiastowy

Jest to związane z tym pytaniemJak zarejestrować przestrzeń nazw w laravel 4 ale wierzę, że to się udało i przestrzenie nazw działają teraz.

Pojawił się nowy problem. Uważam, że błąd pochodzi z próby wpisania podpowiedzi w konstruktorze kontrolera i ma związek z użyciem przestrzeni nazw i użyciem ioc.

BindingResolutionException: Target [App\Models\Interfaces\PostRepositoryInterface] is not instantiable.

Poniższa metoda działała doskonale, dopóki nie próbowałem wprowadzić przestrzeni nazw. Mogę usunąć wszystkie przestrzenie nazw i umieścić interfejs i repozytoria w tym samym katalogu, ale chciałbym wiedzieć, jak tworzyć przestrzenie nazw z tą metodą używania ioc.

Oto odpowiednie pliki.

routes.php

Route::resource('posts', 'PostsController');

PostController.php

<?php
use App\Models\Interfaces\PostRepositoryInterface;
class PostsController extends BaseController {

    public function __construct( PostRepositoryInterface $posts )
    {
        $this->posts = $posts; 
    }

}

PostRepositoryInterface.php

<?php namespace App\Models\Interfaces;
interface PostRepositoryInterface {
    public function all();
    public function find($id);
    public function store($data);
}

EloquentPostRepository.php

<?php namespace App\Models\Repositories;
use App\Models\Interfaces\PostRepositoryInterface;
class EloquentPostRepository implements PostRepositoryInterface {

    public function all()
    {
        return Post::all();
            //after above edit it works to this point
            //error: App\Models\Repositories\Post not found
            //because Post is not in this namespace
    }

    public function find($id)
    {
        return Post::find($id);
    }

    public function store($data)
    {
        return Post::save($data);
    }
}

I widzisz, że kompozytor dump-autoload wykonał swoją pracę.

composer / autoload_classmap.php

return array(
    'App\\Models\\Interfaces\\PostRepositoryInterface' => $baseDir . '/app/models/interfaces/PostRepositoryInterface.php',
    'App\\Models\\Repositories\\EloquentPostRepository' => $baseDir . '/app/models/repositories/EloquentPostRepository.php',

    ....
    )

Jakieś pomysły, gdzie lub co muszę zmienić, aby działało z nazwami, tak jak bez nich?

Dzięki

questionAnswers(2)

yourAnswerToTheQuestion