Инжектор зависимостей разрешает зависимости вашего класса и гарантирует, что при создании экземпляра класса будут внедрены правильные объекты.

Я могу порекомендовать только один инжектор: Auryn. К сожалению, все известные мне альтернативы используют в своей документации и примерах антишаблон локатора сервисов (Service Locator).

В последней части вы настроили класс контроллера и сгенерировали вывод с помощью echo. Но давайте не будем забывать, что у нас есть хорошая объектно-ориентированная абстракция HTTP. И сейчас она недоступна изнутри вашего класса.

Разумно будет воспользоваться инверсией управления. Т.е. вместо того, чтобы на класс возлагать ответственность за создание необходимого ему объекта, вы просто просите об этом. И делается это с помощью внедрения зависимостей. Если сейчас все звучит немного сложно, не волнуйтесь. Просто следуйте инструкциям, и, увидев конечную реализацию, многое станет понятно.

В настоящем руководстве мы не будем реализовывать MVC (Модель-Представление-Контроллер). Вообще-то, MVC правильно реализовать на PHP невозможно, по крайней мере, так, как это было изначально задумано. Если нужны подробности, почитайте «Руководство для начинающих по MVC» и последующие посты.

Так что забудьте о MVC и вместо этого озаботьтесь разделением ответственностей.

Роутер (Router) отправляет данные различным обработчикам в зависимости от установленных вами правил. Пока что не имеет значения, какой URL-адрес используется для доступа к приложению - результат будет один и тот же. Сейчас мы исправим это.

В данном руководстве я буду использовать FastRoute. Но, как и всегда, вы вольны выбрать свой любимый пакет.

В PHP уже есть несколько встроенных функций, упрощающих работу с HTTP. Например, существуют суперглобальные переменные, содержащие информацию из запроса.

И они подойдут в случае, когда вы просто хотите запустить небольшой скрипт, который не составит труда поддерживать. Однако если вы хотите писать чистый, удобный в сопровождении SOLID-код, вместо них вам понадобится класс с красивым объектно-ориентированным интерфейсом, который вы сможете использовать в своем приложении.

Еще раз: вам не придется изобретать велосипед, а просто нужно установить пакет. Я решил написать свой собственный HTTP-компонент, потому что существующие мне не понравились, но вам не обязательно делать то же самое.

Обработчик ошибок позволяет вам приспосабливать то, в каком виде ваш код будет возвращать ошибки.

Приятная страница ошибок с кучей отладочной информации будет с вами на протяжении всего длительного пути разработки. И первый пакет для нашего приложения об этом позаботится.

Мне нравится  filp/whoops, поэтому я покажу как вам его поставить на свой проект. Если вы предпочитаете другой, спокойно ставьте свой. В том и прелесть программинга без фреймворка - у вас есть тотальный контроль над собственным проектом.

Альтернативой мог бы послужить PHP-Error.

Давно хотел я поиграться в Shadow Complex Remastered. Планировал как-нибудь прикупить - всего 599 р., да и скидки на эту игру частенько бывают. А тут июльское обновление Game Pass порадовало ее неожиданным наличием. Наслаждаюсь!

Помимо этого подписка пополнилась:

  1. DiRT 4
  2. Oblivion - The Elder Scrolls IV
  3. Fallout 3
  4. Zombie Army Trilogy
  5. Human Fall Flat
  6. ABZU

 

Composer - это менеджер зависимостей для PHP.

Только лишь потому, что вы не используете фреймворк, не значит, что необходимо изобретать колесо каждый раз, когда нужно что-то сделать. С помощью Composer вы можете устанавливать для своего приложения сторонние библиотеки.

Если вы еще не поставили Composer, перейдите по ссылке на сайт и сделайте это. Пакеты Composer для своего проекта вы найдете на Packagist.

Наверх