Целевой интерфейс Laravel 4 не может быть создан
Это связано с этим вопросомКак зарегистрировать пространство имен в laravel 4 но я верю, что все получилось, и пространства имен работают сейчас.
Есть новая проблема, с которой я столкнулся. Я полагаю, что ошибка происходит от попытки ввести подсказку в конструкторе контроллера и связана с использованием пространств имен и использованием ioc.
BindingResolutionException: Target [App\Models\Interfaces\PostRepositoryInterface] is not instantiable.
Метод ниже работал отлично, пока я не попытался ввести пространства имен. Я могу удалить все пространства имен и поместить интерфейс и репозитории в один каталог, но хотел бы знать, как заставить пространства имен работать с этим методом использования ioc.
Вот соответствующие файлы.
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);
}
}
И вы можете видеть, что composer dump-autoload сделал свое дело.
композитор / 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',
....
)
Любые идеи, где или что мне нужно изменить, чтобы заставить эту работу работать с пространствами имен, как это происходит без них?
Спасибо