У меня есть HomeController
с его конструктором, который использует экземпляр Guzzle.
/**
* Create a new controller instance.
*
* @param \GuzzleHttp\Client|null $client
*
* @return void
*/
public function __construct(Client $client = null)
{
$this->middleware('auth');
$this->middleware('user.settings');
if ($client === null) {
$param = [
'base_uri' => 'http://httpbin.org/',
'defaults' => [
'exceptions' => false,
'verify' => false
]
];
$client = new Client($param);
}
$this->setClient($client);
}
Я бы использовал через __constructor (), чтобы иметь возможность смоделировать его в тестах.
Мои проблемы в том, что Laravel автоматически загружает инъекцию, а введенный клиент Guzzle имеет пустые значения по умолчанию (и больше не может его редактировать). Другими словами: при первом вызове HomeController Client
не равен нулю. А мне нужно как ноль.
Как я могу остановить это поведение (только для __construct () для HomeController)? Я действительно использую DI в каждой части моего веб-приложения.
EDIT
Я просто нахожу, что если я не намекаю на Client
, конечно, Laravel не может автоматически загружаться. Это правильный режим для работы?
Новый конструктор:
public function __construct($client = null)
Спасибо