Как стать автором
Обновить

Комментарии 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;
		}

ну и аналогично у второго класса?

В PHP 8 не надо

Нет, уже не надо. Посмотрите на новый синтаксис, который объединяет объявление свойства и присваивание ему значения в конструкторе.

Auto-wiring кажется удобной штукой, пока не работаешь с симфони. Приходится править сам класс, описание в yml, ещё и IDE ничего толком подсказать не может. Да и идентификаторы встроенных сервисов сложно найти

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории