- Подробности
- </linux>
Запустите нижеприведенный фрагмент кода, дабы вычистить надоедливые файлы Zone.Identifier, которые таинственно создаются при копировании данных в WSL2.
find . -name "*:Zone.Identifier" -type f -delete
Запустите нижеприведенный фрагмент кода, дабы вычистить надоедливые файлы Zone.Identifier, которые таинственно создаются при копировании данных в WSL2.
find . -name "*:Zone.Identifier" -type f -delete
Инжектор зависимостей разрешает зависимости вашего класса и гарантирует, что при создании экземпляра класса будут внедрены правильные объекты.
Я могу порекомендовать только один инжектор: 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 порадовало ее неожиданным наличием. Наслаждаюсь!
Помимо этого подписка пополнилась:
Composer - это менеджер зависимостей для PHP.
Только лишь потому, что вы не используете фреймворк, не значит, что необходимо изобретать колесо каждый раз, когда нужно что-то сделать. С помощью Composer вы можете устанавливать для своего приложения сторонние библиотеки.
Если вы еще не поставили Composer, перейдите по ссылке на сайт и сделайте это. Пакеты Composer для своего проекта вы найдете на Packagist.