fomiash
Посты fomiash

Обработка ошибок и исключений в PHP

PHP

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

Читать далее
1
9
fomiash fomiash
01 Ноября

Использование замыканий в PHP

PHP

Замыкание в PHP - это способность анонимной функции взаимодействовать с её окружением. То есть переменные из контекста замыкания могут быть использованы внутри функции.

Анонимная функция - это обычная функция не имеющая названия. Может быть присвоена переменной и не только, также может быть возвращаемым результатом функции или метода, аналогично экземпляру внутреннего класса Closure, которым представлена.

Пример обычной...

Читать далее
1
26

Какие процессы происходят после ввода URL в браузере

Когда пользователь вводит URL в браузере, происходит следующая последовательность процессов:

  1. Парсинг URL: Браузер анализирует введенный URL, чтобы выделить протокол, доменное имя и путь к ресурсу.

  2. DNS-поиск: Браузер отправляет запрос к DNS-серверу для получения IP-адреса, связанного с доменным именем. DNS-сервер возвращает IP-адрес браузеру.

  3. Установка TCP-соединения: Браузер устанавливает TCP-соединение с веб-сервером, используя...

Читать далее
2
39

Шпаргалка по REST - стиле разработки веб-сервисов

REST, или Representational State Transfer, это архитектурный стиль для разработки веб-сервисов. Он основан на нескольких принципах, что делает его простым, масштабируемым и гибким для создания и использования веб-сервисов.

REST использует стандартные HTTP-методы, такие как GET, POST, PUT и DELETE, для взаимодействия между клиентом и сервером. Каждая операция выполняется на определенном ресурсе, которому обычно соответствует определенный URL.

REST подчеркивает...

Читать далее
1
41

Для чего нужен humans.txt?

По аналогии с robots.txt имеет место существовать humans.txt файл. Самый известный - это конечно файл humans.txt от Google. Его содержимое - обычный текст, который содержит краткую информацию о команде компании и ссылку на вакансии. Идея такого файла, и даже уже сформировавшегося вокруг него целого движения, в том, чтобы показать, что Интернет существует в первую очередь для людей. При этом изначально это был произвольный текст...

Читать далее
2
48
1
Публикуйте, отвечайте, комментируйте...
Вы еще не зарегистрировались?
Войти

Отчет по подготовке версии HLEB 2.0

Оказалось, что написание новой версии фреймворка не самое главное, большую часть работы занимает написание тестов на все его функции и составление документации. Кроме этого, из-за изменений в ядре фреймворка, необходимо сделать новые версии всех его собственных библиотек. Мне бы не хотелось, чтобы его возможности оказались урезанными по сравнению с предыдущей версией, поэтому будет и обновление библиотек. Возможно, что 70% от всей...

Читать далее
1
39
1

Для чего нужны кофе и плюшки в вакансиях

Сейчас модно завлекать на работу в IT всевозможными бонусами. Их перечень невелик и по их наличию можно судить, что работодатель ожидает взамен. К слову, собственная практика показала, что работать в отсутствии всяких обещанных бонусов гораздо удобнее, вот работа, вот зарплата, всё просто. Иные обязательства от сторон вносят некоторую неразбериху в отношения с работодателем. При этом допускаю, что может быть и иная трактовка, но с...

Читать далее
3
82
4

Генеративная модель Web 3.0

Новый Google

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

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

Читать далее
3
51
1

Для чего нужны атрибуты в PHP

PHP

Атрибуты вида #[CustomAttribute] добавлены в PHP 8.0 (RFC, Документация)

Атрибуты предоставляют возможность добавлять различную конфигурацию к конкретным классам, методам, константам класса и тд. При этом, пока вы не начнёте обращаться к этой конфигурации, выполнение PHP никак её не воспринимает, как и обычные комментарии. Через рефлексию можно запросить атрибут конкретного класса/метода и...

Читать далее
2
59
1

Распространенные «детские» ошибки на сайтах и причины их возникновения

валидация пароля

Когда пользователь заходит первый раз на сайт, он судит его по "одёжке", то есть внешнему виду и дизайну. А первое впечатление о работоспособности складывается обычно при регистрации, если там что-то пошло не так, то это может сильно подорвать дальнейшее доверие к ресурсу.

Распространенной ошибкой разработчиков и самой банальной является неправильное предоставление пользователю...

Читать далее
2
51

Вместо отчёта по фреймворку HLEB 2

Вышел отчёт по фреймворку Yii2 на Хабре https://habr.com/ru/articles/737662/ Так получилось, что разбираясь с RoadRunner и другими вещами, залезал в репозитории Yii3 в том числе и попутно отправил несколько пулл-реквестов, заметив неточности, и в итоге теперь мои имя и фамилия оказались в списке благодарностей разработчикам Yii) Это приятно видеть и вместо отчета по своему фреймворку могу сказать, что процесс идёт и такие вот штуки - побочные его...

Читать далее
3
84
2
fomiash fomiash
08 Мая

PHP функция compact()

PHP

Довольно редко используемая функция compact() в узкоспециальных случаях значительно упрощает код. В некоторых фреймворках при отображении шаблона (так можно сделать в Laravel, например), если совместить её с передачей параметров, получится так.

Неоптимизированный код:

return view('template', [
        'x' => $x,
        'y' => $y,
    ]);

Оптимизированный при помощи compact():

return view('template', compact('x', 'y'));

Как видно из примера, функция compact из существующих переменных собирает соответствующий массив данных, где название переменной соответствует её значению.

Подробнее в документации

2
55

Самый ужасный код, который когда либо встречал

Когда мне говорят, что нужно рефакторить какой-то плохой участок кода, мне интересно, насколько сильно он подходит под определение мной однажды виденного и ставшего образцом, скажем так совершенного и идеально ужасного кода. Этот образчик наблюдал в средней известности компании и проекте, последний в своём роде был очень даже ничего по популярности. Но секрет его популярности был в том, что он один из первых занял нишу и в ней...

Читать далее
1
113
3

Мир PHP с высоты птичьего полёта

PHP

Энтузиаст попытался изобразить экосистему PHP в виде городской среды. Инфографика выглядит красиво. Не стоит искать технических отсылок к реальной работе фреймворков, их там нет. Скорее юмористический обзор от автора на технологии, которые ему известны. Дополнительная задачка на внимательность - называется "найди Yii". Этот фреймворк там тоже есть.

Оригинал

3
81
6

Заметки о переделке фреймворка HLEB

Как-то так вышло, что в предыдущих заметках более указывал на недостатки проектов/решений, чем находил их положительные стороны. Но, как часто бывает, если бы меня полностью устраивало все, то и в собственных проектах (так называемых пет-проектах) не было бы необходимости. В этом блоге упомянуты разнообразные подходы к созданию программных продуктов (Веб в основном), где упоминаю, что каждый отдельный случай нужно рассматривать...

Читать далее
2
83
2

В преддверии версии фреймворка HLEB 2.0

Есть предварительные наброски, как будет выглядеть версия 2.0 фреймворка, поэтому поделюсь ими, дабы эти изменения не стали неожиданностью.

PHP 8.3 - при том, что переписывание ядра фреймворка началось только сейчас, к тому времени, как оно будет закончено - скорее всего выйдет релиз PHP 8.3, то есть версия фреймворка 1.x будет от PHP 7.1 до 8.2. В версии PHP 8.3 не так много новинок, скорее это будет условная граница для фреймворка и библиотек, где...

Читать далее
2
76
1

Пирамида Хеопса - раздолье для девопса

На днях мне попался на доделку проект, который вызвал смешанные ощущения, он одновременно был технологически наворочен, но представлял из себя чрезвычайно простой сайт с дюжиной страниц.

В какой-то мере мне были понятны намерения его автора, как поклонник Symfony и всяческих передовых технологий по созданию масштабируемых корпоративных проектов, он сделал всё безупречно. Но этот разработчик уже не работает в компании и поэтому...

Читать далее
3
60
1

Резкое увеличение посещаемости как еще одна причина недоступности сайта

DDOS

К предыдущей статье, где недоступность сайта вызвали просроченные домены/сертификаты, можно добавить ещё одну наиболее частую причину - скачкообразное повышение посещаемости. И это не неожиданная DDOS-атака проекта, а вполне прогнозируемая проблема, которую можно было определить практически за год (когда публикуется календарь праздников). То есть для каждой...

Читать далее
2
60

Просроченный домен - частая ошибка, из-за которой сайт полностью недоступен

Ошибка 404

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

Читать далее
1
66
1

Экранировать ввод или вывод?

Тенденция иметь один ответ на все возможные варианты может не только облегчить жизнь программисту, но и навредить результатам его профессиональной деятельности. Этот случай не исключение.

Принимая во внимание все многообразие существующих Веб-сайтов (и это только если их рассматривать отдельно) можно ли считать, что для всех может существовать один принцип экранирования данных? В реальности из стартапов в большие проекты...

Читать далее
2
66


Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.