Я сравнивал свой код to this question и многие другие руководства в Интернете, но с небольшим успехом. Все работает нормально, пока я не попытаюсь ввести интерфейс в контроллер. Когда я ввожу его, я получаю интерфейс Target, это не реальная ошибка.Laravel 4: Target Interface не является реальным
приложение \ модели \ Interfaces \ InterviewInterface.php
<?php namespace app\models\Interfaces;
interface InterviewInterface {
public function fetch($id);
}
приложение \ модели \ Interview.php
use app\models\Interfaces\InterviewInterface;
class Interview extends Eloquent implements InterviewInterface {
public function fetch($id)
{
return Interview::find($id);
}
}
routes.php
App::bind('app\models\Interfaces\InterviewInterface');
composer.json
"psr-4": {
"Blog\\Articles\\" : "app/lib/Blog/Articles",
"app\\models\\Interfaces\\" : "app/models/Interfaces/InterviewInterface.php"
}
AdminInterviewController.php
use app\models\Interfaces\InterviewInterface as InterviewInterface;
class AdminInterviewController extends BaseController {
public function __construct(InterviewInterface $interview)
{
$this->interview = $interview;
$this->beforeFilter('auth');
}
}
Как только я добавляю
use app\models\Interfaces\InterviewInterface as InterviewInterface;
и
__construct(InterviewInterface $interview)
$this->interview = $interview;
линии, это дает мне ошибку. Я вытаскиваю их, никаких ошибок.
Несколько раз я запускал команды dump-autoload и php artisan dump-autoload, и они преуспели.
Любые идеи? Я очень ценю это.
Все это время я смотрел на другой вопрос о том, что второй аргумент был для чего-то другого. О чем я думал в мире? Большое спасибо, @ Laravelian. Должен ли App :: bind действительно оставаться на моих маршрутах.php? – Christophe
@christf вы можете использовать поставщика услуг, если хотите избежать размещения App :: bind в своих маршрутах.php –