Обработка ошибок и исключений в PHP
После выхода PHP 7 механизм встроенных ошибок был сильно изменён и теперь представляет собой разделение на классы Error (Фатальная ошибка) и Exception (Исключение). Первый содержит перечень унаследованных от него типизированных классов для фатальных ошибок PHP, а Exception должен содержать исключения с возможностью обработки, которые будут от него унаследованы. Вместе эти два основных класса объединены интерфейсом Throwable, соответственно и...

Использование замыканий в PHP
Замыкание в PHP - это способность анонимной функции взаимодействовать с её окружением. То есть переменные из контекста замыкания могут быть использованы внутри функции.
Анонимная функция - это обычная функция не имеющая названия. Может быть присвоена переменной и не только, также может быть возвращаемым результатом функции или метода, аналогично экземпляру внутреннего класса Closure, которым представлена.
Пример обычной...
Какие процессы происходят после ввода URL в браузере
Когда пользователь вводит URL в браузере, происходит следующая последовательность процессов:
-
Парсинг URL: Браузер анализирует введенный URL, чтобы выделить протокол, доменное имя и путь к ресурсу.
-
DNS-поиск: Браузер отправляет запрос к DNS-серверу для получения IP-адреса, связанного с доменным именем. DNS-сервер возвращает IP-адрес браузеру.
-
Установка TCP-соединения: Браузер устанавливает TCP-соединение с веб-сервером, используя...
Шпаргалка по REST - стиле разработки веб-сервисов
REST, или Representational State Transfer, это архитектурный стиль для разработки веб-сервисов. Он основан на нескольких принципах, что делает его простым, масштабируемым и гибким для создания и использования веб-сервисов.
REST использует стандартные HTTP-методы, такие как GET, POST, PUT и DELETE, для взаимодействия между клиентом и сервером. Каждая операция выполняется на определенном ресурсе, которому обычно соответствует определенный URL.
REST подчеркивает...
Для чего нужен humans.txt?
По аналогии с robots.txt имеет место существовать humans.txt файл. Самый известный - это конечно файл humans.txt от Google. Его содержимое - обычный текст, который содержит краткую информацию о команде компании и ссылку на вакансии. Идея такого файла, и даже уже сформировавшегося вокруг него целого движения, в том, чтобы показать, что Интернет существует в первую очередь для людей. При этом изначально это был произвольный текст...
Вы еще не зарегистрировались? Войти
Отчет по подготовке версии HLEB 2.0
Оказалось, что написание новой версии фреймворка не самое главное, большую часть работы занимает написание тестов на все его функции и составление документации. Кроме этого, из-за изменений в ядре фреймворка, необходимо сделать новые версии всех его собственных библиотек. Мне бы не хотелось, чтобы его возможности оказались урезанными по сравнению с предыдущей версией, поэтому будет и обновление библиотек. Возможно, что 70% от всей...
Для чего нужны кофе и плюшки в вакансиях
Сейчас модно завлекать на работу в IT всевозможными бонусами. Их перечень невелик и по их наличию можно судить, что работодатель ожидает взамен. К слову, собственная практика показала, что работать в отсутствии всяких обещанных бонусов гораздо удобнее, вот работа, вот зарплата, всё просто. Иные обязательства от сторон вносят некоторую неразбериху в отношения с работодателем. При этом допускаю, что может быть и иная трактовка, но с...
Генеративная модель Web 3.0
Так может выглядеть поисковая страница Google в ближайшем будущем, в таком виде её уже видит часть пользователей в качестве эксперимента.
По всей видимости, контент будет полностью обезличен, нет привычной связи с сайтом, откуда информация взята, чтобы можно было перейти и составить собой часть его трафика. Информационные ресурсы могут пострадать в первую очередь или просто измениться до...
Для чего нужны атрибуты в PHP
Атрибуты вида #[CustomAttribute]
добавлены в PHP 8.0 (RFC, Документация)
Атрибуты предоставляют возможность добавлять различную конфигурацию к конкретным классам, методам, константам класса и тд. При этом, пока вы не начнёте обращаться к этой конфигурации, выполнение PHP никак её не воспринимает, как и обычные комментарии. Через рефлексию можно запросить атрибут конкретного класса/метода и...
Распространенные «детские» ошибки на сайтах и причины их возникновения
Когда пользователь заходит первый раз на сайт, он судит его по "одёжке", то есть внешнему виду и дизайну. А первое впечатление о работоспособности складывается обычно при регистрации, если там что-то пошло не так, то это может сильно подорвать дальнейшее доверие к ресурсу.
Распространенной ошибкой разработчиков и самой банальной является неправильное предоставление пользователю...
Вместо отчёта по фреймворку HLEB 2
Вышел отчёт по фреймворку Yii2 на Хабре https://habr.com/ru/articles/737662/ Так получилось, что разбираясь с RoadRunner и другими вещами, залезал в репозитории Yii3 в том числе и попутно отправил несколько пулл-реквестов, заметив неточности, и в итоге теперь мои имя и фамилия оказались в списке благодарностей разработчикам Yii) Это приятно видеть и вместо отчета по своему фреймворку могу сказать, что процесс идёт и такие вот штуки - побочные его...

PHP функция compact()
Довольно редко используемая функция compact() в узкоспециальных случаях значительно упрощает код. В некоторых фреймворках при отображении шаблона (так можно сделать в Laravel, например), если совместить её с передачей параметров, получится так.
Неоптимизированный код:
return view('template', [
'x' => $x,
'y' => $y,
]);
Оптимизированный при помощи compact():
return view('template', compact('x', 'y'));
Как видно из примера, функция compact из существующих переменных собирает соответствующий массив данных, где название переменной соответствует её значению.
Подробнее в документации
Самый ужасный код, который когда либо встречал
Когда мне говорят, что нужно рефакторить какой-то плохой участок кода, мне интересно, насколько сильно он подходит под определение мной однажды виденного и ставшего образцом, скажем так совершенного и идеально ужасного кода. Этот образчик наблюдал в средней известности компании и проекте, последний в своём роде был очень даже ничего по популярности. Но секрет его популярности был в том, что он один из первых занял нишу и в ней...
Мир PHP с высоты птичьего полёта
Энтузиаст попытался изобразить экосистему PHP в виде городской среды. Инфографика выглядит красиво. Не стоит искать технических отсылок к реальной работе фреймворков, их там нет. Скорее юмористический обзор от автора на технологии, которые ему известны. Дополнительная задачка на внимательность - называется "найди Yii". Этот фреймворк там тоже есть.
Заметки о переделке фреймворка HLEB
Как-то так вышло, что в предыдущих заметках более указывал на недостатки проектов/решений, чем находил их положительные стороны. Но, как часто бывает, если бы меня полностью устраивало все, то и в собственных проектах (так называемых пет-проектах) не было бы необходимости. В этом блоге упомянуты разнообразные подходы к созданию программных продуктов (Веб в основном), где упоминаю, что каждый отдельный случай нужно рассматривать...
В преддверии версии фреймворка HLEB 2.0
Есть предварительные наброски, как будет выглядеть версия 2.0 фреймворка, поэтому поделюсь ими, дабы эти изменения не стали неожиданностью.
PHP 8.3 - при том, что переписывание ядра фреймворка началось только сейчас, к тому времени, как оно будет закончено - скорее всего выйдет релиз PHP 8.3, то есть версия фреймворка 1.x будет от PHP 7.1 до 8.2. В версии PHP 8.3 не так много новинок, скорее это будет условная граница для фреймворка и библиотек, где...
Пирамида Хеопса - раздолье для девопса
На днях мне попался на доделку проект, который вызвал смешанные ощущения, он одновременно был технологически наворочен, но представлял из себя чрезвычайно простой сайт с дюжиной страниц.
В какой-то мере мне были понятны намерения его автора, как поклонник Symfony и всяческих передовых технологий по созданию масштабируемых корпоративных проектов, он сделал всё безупречно. Но этот разработчик уже не работает в компании и поэтому...
Резкое увеличение посещаемости как еще одна причина недоступности сайта
К предыдущей статье, где недоступность сайта вызвали просроченные домены/сертификаты, можно добавить ещё одну наиболее частую причину - скачкообразное повышение посещаемости. И это не неожиданная DDOS-атака проекта, а вполне прогнозируемая проблема, которую можно было определить практически за год (когда публикуется календарь праздников). То есть для каждой...
Просроченный домен - частая ошибка, из-за которой сайт полностью недоступен
Компании, которые активно представлены в интернете, обычно регистрируют большое количество доменов. А при завязке основных сайтов на второстепенные, например статические картинки лежат на таком домене, регистрация через другой, а вот эти ресурсы подтягиваются через третий, в таком случае сложно уследить за истечением времени регистрации домена на каждом из них, который может заблокировать...
Экранировать ввод или вывод?
Тенденция иметь один ответ на все возможные варианты может не только облегчить жизнь программисту, но и навредить результатам его профессиональной деятельности. Этот случай не исключение.
Принимая во внимание все многообразие существующих Веб-сайтов (и это только если их рассматривать отдельно) можно ли считать, что для всех может существовать один принцип экранирования данных? В реальности из стартапов в большие проекты...