Обработка ошибок и исключений в PHP
После выхода PHP 7 механизм встроенных ошибок был сильно изменён и теперь представляет собой разделение на классы Error (Фатальная ошибка) и Exception (Исключение). Первый содержит перечень унаследованных от него типизированных классов для фатальных ошибок PHP, а Exception должен содержать исключения с возможностью обработки, которые будут от него унаследованы. Вместе эти два основных класса объединены интерфейсом Throwable, соответственно и...
Какие процессы происходят после ввода URL в браузере
Когда пользователь вводит URL в браузере, происходит следующая последовательность процессов:
-
Парсинг URL: Браузер анализирует введенный URL, чтобы выделить протокол, доменное имя и путь к ресурсу.
-
DNS-поиск: Браузер отправляет запрос к DNS-серверу для получения IP-адреса, связанного с доменным именем. DNS-сервер возвращает IP-адрес браузеру.
-
Установка TCP-соединения: Браузер устанавливает TCP-соединение с веб-сервером, используя...
Шпаргалка по REST - стиле разработки веб-сервисов
REST, или Representational State Transfer, это архитектурный стиль для разработки веб-сервисов. Он основан на нескольких принципах, что делает его простым, масштабируемым и гибким для создания и использования веб-сервисов.
REST использует стандартные HTTP-методы, такие как GET, POST, PUT и DELETE, для взаимодействия между клиентом и сервером. Каждая операция выполняется на определенном ресурсе, которому обычно соответствует определенный URL.
REST подчеркивает...
Для чего нужны атрибуты в PHP
Атрибуты вида #[CustomAttribute]
добавлены в PHP 8.0 (RFC, Документация)
Атрибуты предоставляют возможность добавлять различную конфигурацию к конкретным классам, методам, константам класса и тд. При этом, пока вы не начнёте обращаться к этой конфигурации, выполнение PHP никак её не воспринимает, как и обычные комментарии. Через рефлексию можно запросить атрибут конкретного класса/метода и...
Самый ужасный код, который когда либо встречал
Когда мне говорят, что нужно рефакторить какой-то плохой участок кода, мне интересно, насколько сильно он подходит под определение мной однажды виденного и ставшего образцом, скажем так совершенного и идеально ужасного кода. Этот образчик наблюдал в средней известности компании и проекте, последний в своём роде был очень даже ничего по популярности. Но секрет его популярности был в том, что он один из первых занял нишу и в ней...
Вы еще не зарегистрировались? Войти
Экранировать ввод или вывод?
Тенденция иметь один ответ на все возможные варианты может не только облегчить жизнь программисту, но и навредить результатам его профессиональной деятельности. Этот случай не исключение.
Принимая во внимание все многообразие существующих Веб-сайтов (и это только если их рассматривать отдельно) можно ли считать, что для всех может существовать один принцип экранирования данных? В реальности из стартапов в большие проекты...
Что такое легаси и спагетти в коде
Долгое время для меня была очевидной формулировка "легаси" как низкая читаемость кода и невозможность его полноценной поддержки, пока уровень проектов, на которых работаю, не стал повышаться. Казалось бы, можно бы жить спокойно, так как там легаси нет, но не всё так просто, ведь там этим словом называют код, который только устарел, хоть и написан он качественно. Есть даже известная...
Что вы должны использовать в качестве визуализации соединений SQL вместо диаграмм Венна Перевод
Перевод. Оригинал статьи Автор Андреас Мартинсон (Andreas Martinson)
От 4 апреля 2022 г.
Диаграммы Венна (Venn Diagrams) устарели (по утверждению автора).
Выше показано изображение автора, вдохновленное R for Data Science (предлагаемое им вместо диаграмм...
Веб-проектирование как кораблестроение, а не архитектура зданий
Немного ранее уже упоминал о том, что подходить с одними и теми же стандартами проектирования к принципиально разным направлениям программирования не может быть достаточно рационально.
При этом утверждении возник вопрос, а в какой же форме тогда предстанет Web-разработка, если отделить её от общих стандартов, распространяющихся сейчас на все виды...
Для чего нужен оператор yield в PHP
Оператор yield — основа генераторной функции. Отдалённо этот оператор похож на оператор return , так как тоже реализует возврат, только вместо того, чтобы останавливать выполнение текущей функции, yield предоставляет значение коду, зацикливающемуся на генераторе, и приостанавливает выполнение функции генератора.
Для понимания, что делает yield, необходимо понимать, что такое генераторы. Генераторам же предшествуют итераторы. Когда вы...
Что десктопу хорошо, то вебу ― смерть
В предыдущих статьях кратко касался идеи, что распространённые правила программирования по-разному применимы к десктопным приложениям и для веб-разработки, теперь попробую расширить эту тему.
Большинство книг с рекомендациями по паттернам разработки и архитектурного проектирования кода приложения максимально размыты по отношению к области применения. В...
Использование псевдотипа iterable в качестве параметра
Тип iterable может использоваться как тип параметра для указания, что функция принимает набор значений, но ей не важна форма этого набора, пока он будет использоваться с foreach.
function example(iterable $iterable) {
foreach ($iterable as $param) {
// ...
}
}
Каким типом может быть этот набор? Параметр принимает любой массив (array) или объект, реализующий интерфейс Traversable. Оба этих типа тоже итерируются с помощью foreach.
Псевдотип iterable впервые появился в PHP 7.1.0
Движки для базы данных MySQL - InnoDB, MyISAM и Archive
InnoDB — многофункциональный движок, который поддерживает большинство функций: транзакции, все ограничения, внешние ключи, связи таблиц и другое, но не поддерживает полнотекстовый индекс. Данный движок в основном направлен на выборку данных, а не на вставку, следовательно, лучше использовать его там, где чаще всего нужно будет быстро что-то выбрать, а не вставить. Или там, где нужен какой-то функционал,...
💾 Как сохранять смайлы в базу данных MySQL
Если вы хотите сохранить смайлы 😁 в базу данных MySQL, необходимо, чтобы в таблице была кодировка utf8mb4(utf8mb4_general_ci), которая поддерживает верхний диапазон Unicode символов.
Для таблицы можно выполнить следующие запросы, в них MyTable
- название таблицы, content
- название поля в таблице, в которое сохраняется контент со смайлами.
При изменении кодировки контент столбца будет переконвертирован в новую кодировку.
ALTER TABLE `MyTable` COLLATE...
Функция PHP chunk_split — разбивает строку на фрагменты
chunk_split()
Позволяет разбить строку на фрагменты по заданному количеству символов. Может пригодиться, когда нужно отобразить пользователю многозначный код в читаемом виде или в иных подобных случаях.
Имеет три параметра:
string string — разбиваемая строка.
int length — длина фрагмента. Необязательный, по умолчанию 76.
string separator — последовательность символов, используемая в качестве конца строки. Необязательный, по умолчанию "\r\n".
Возвращает: string
Пример:
Должен ли код подстраиваться под его тестирование?
«Команда Android пошла ещё дальше — телефоны основной команды разработки почти постоянно работают на ежедневной сборке. Идея в том, что разработчики будут писать меньше кода с ошибками, если от этого зависит их возможность позвонить домой.»
(«Как тестируют в Google» Джеймс Уиттакер, Джейсон Арбон, Джефф Кароло)
Хоть однозначного ответа на этот вопрос нет, можно рассмотреть конкретные случаи, когда тестирование кода влияет в той или...
Как подступиться к программированию для начинающего. Часть 2. Практика
В прошлой части мне показалось уместным вспомнить собственный опыт в качестве начинающего на нескольких примерах, теперь же можно порассуждать о практике программирования. Собственно, рассуждать здесь не нужно, практика и ещё раз практика. Но, из первой части, возможно уже стало понятно, что интересная практика гораздо полезнее рутины для развития в качестве программиста. Здесь же упоминается...
Как подступиться к программированию для начинающего. Часть 1. Теория
В интернете множество рекомендаций и курсов, как изучать тот или иной язык программирования, соответствующая таргетированная реклама преследует каждого, кто хотя бы раз поинтересовался "Как научиться программировать с нуля" или хотел завести домашнего питона (Python). Тем не менее, для начинающего программиста не только важно знать циклы и условия, но и перейти к необходимой логике составления кода, исполняющегося всегда буквально....
Паттерны проектирования
Что из себя представляет паттерн?
Паттерн проектирования — это распространённое решение конкретной проблемы при проектировании архитектуры программы.
В отличие от готовых функций или библиотек с определённым кодом, паттерн нельзя просто вставить в программу и использовать. Паттерн представляет собой общую концепцию решения той или иной проблемы, которую нужно...
Насколько завершёнными должны быть классы в OOП (анти-принцип YAGNI)?
YAGNI («You aren't gonna need it»; с англ. — «Вам это не понадобится») — процесс и принцип проектирования ПО, при котором в качестве основной цели и/или ценности декларируется отказ от избыточной функциональности, — то есть отказ добавления функциональности, в которой нет непосредственной надобности.
С этим утверждением из Википедии довольно сложно спорить. Но любая программа не имеет своего завершения и постоянно изменяется и ...
От корки до корки, изучать фреймворки
Если вы захотите рассказать о своём проекте, о технической его стороне, то, возможно, важным фактом будет указание, на каком фреймворке он написан. Тем не менее самое важное в нём то, какие идеи вы реализовали на этом фреймворке, потому что без них фреймворк способен только на "hello world" и то, пока вы этого не укажете явно.
Примечание. Язык программирования озвучивать не нужно, об этом...
Laravel - высокая скорость... разработки
Удивительно, но всякий раз, когда упоминается "быстрота" Laravel, подразумевается скорость разработки на нём, а не что либо иное, что можно подумать. Когда Тэйлор Отвел (автор фреймворка) создал его упрощённую версию под названием Lumen, причиной стали несколько коммерческих заказов на разработку, их итоговый результат не совсем устраивал Тэйлора (возможно, заказчиков тоже), в основном из-за медленной работы Laravel. С чисто репутационной...
SOLID - основные принципы проектирования в ООП
SOLID
Это аббревиатура пяти основных принципов проектирования в объектно-ориентированном программировании
В большинстве случаев, если вы желаете добра себе и своим коллегам, а также "набили шишки" на неправильно спроектированных классах, и сделали из этого выводы, то будете и так пользоваться принципами, повторяющими SOLID, а также многими другими, что тоже немаловажно. Это к тому, что на знании...
Что такое трейты в PHP и как их использовать
Трейты в PHP существуют с версии 5.4, то есть относительно давно, они добавляют возможность переиспользования кода без наследования, когда один и тот же код можно использовать в совершенно не связанных между собой классах. Факт использования трейтов во фреймворке Symfony, говорит о том, что они могут без проблем вписаться в современные архитектурные решения кода и ничуть не устарели. В целом, они...