Comments 13
catch (Throwable $exception)
Вы уверены?
Абсолютно. Код размещен в репозитории, ссылка в конце статьи. Вы можете его запустить.
А в чем вопрос? Почему я должен быть неуверен?
Очень хороший подход в изложении обучающего материала. Спасибо за статью.
public function get(string $id): mixed
{
return $this->objects[$id]();
}
На каждый вызов будет создан новый объект. В случае с базой данных на каждый экземпляр класса будет еще и новое соединение.
Стоило бы добавить хранение созданных объектов, а не только функции для их создания.
PSR-11 обязывает возвращать один и тот же объект (и в тоже время обязывает пользователей не полагаться на это).
Two successive calls to
get
with the same identifier SHOULD return the same value.
Да. Можно добавить «синглтонность».
Но в целом неважно для понимания темы статьи.
Согласен, это существенный недостаток. Контайнер обязательно должен хранить в своем кеше созданные обьекты.
Но в остальном, статья неплохая для новичков или даже середнячков, для понимания что такое application и dependency injection
а разве не надо в 4 шаге добавить свойство и присвоить ему значение в конструкторе
class UserRepository
{
$db
public function __construct(
private Db $db
)
{
$this->db = $db;
}
ну и аналогично у второго класса?
Auto-wiring кажется удобной штукой, пока не работаешь с симфони. Приходится править сам класс, описание в yml, ещё и IDE ничего толком подсказать не может. Да и идентификаторы встроенных сервисов сложно найти
Готовимся к собеседованию по PHP: Что такое «DI», «Container», «Auto-wiring» за семь простых шагов