Я хочу сделать тестовый код в контроллерах Laravel 4. Я знаю, что DI (Dependency Injection), и я знаю, что тестируемый код может выглядеть следующим образом:Инъекция зависимостей в контроллерах Laravel 4 экземпляров всех объектов
class UsersController extends BaseController
{
public function __construct(User $user, Notice $notice)
{
$this->user = $user;
$this->notice = $notice;
}
public function getIndex()
{
...
$this->user
...
$this->notice
...
}
public function getPage()
{
...
$this->user
...
}
}
Как вы можете видеть, что я впрыскивается два объекта в контроллер.
Для getIndex
функция, она совершенна, я использую в ней два объекта.
Но, пожалуйста, обратите внимание, что для getPage
функция, я просто использую $this->user
, мне не нужен $this->notice
.
Однако объект $this->notice
был создан уже, это действительно не очень хорошо.
Есть ли лучший способ не включать все объекты?
Если вы структурировать свой код прямо в Laravel тогда да, ленивая загрузка возможна. Вам просто нужно явно создать файлы, необходимые во время выполнения в начале global.php, а затем загрузить другие с обычным вызовом имен. Кроме того, для тестирования я предлагаю помещать пользовательские классы в файлы composer.json, поскольку они устанавливают их в глобальном средстве неинтегрируют их вовремя для тестового времени выполнения. – Gokigooooks