Статьи с тегом «PHP»

BackendPHP

PHP 8.4: Curl: Новая опция CURLOPT_PREREQFUNCTION

Расширение Curl в PHP 8.4 представляет новую опцию CURLOPT_PREREQFUNCTION, позволяющую задать пользовательский callable для принятия решения о продолжении или прерывании запроса. Эта возможность доступна, если расширение собрано с libcurl 7.80.0 или более поздней версии.
BackendPHP

PHP 8.4: exit/die изменены из языковых конструкций в функции

Ключевое слово exit и его псевдоним die — языковые конструкции, выводящие сообщение и завершающие текущий сценарий. В CLI-приложениях exit/die можно использовать для завершения работы приложения с заданным кодом выхода.
BackendPHP

Асимметричная видимость PHP свойств

Одной из менее заметных функций, появившихся в PHP 8.4, каламбурно говоря, является ассиметричная видимость PHP свойств. Это обновление текущей видимости, а также ряд усовершенствованных возможностей по сравнению с readonly, хуками свойств или магическими методами. Это не для всех, но может оказаться весьма полезным. Давайте посмотрим!
BackendPHP

PHP 8.4: Intl: Новая функция intltz_get_iana_id и метод IntlTimeZone::getIanaID

Расширение Intl в PHP 8.4 предоставляет новую функцию intltz_get_iana_id и новый статический метод IntlTimeZone::getIanaID() в классе IntlTimeZone, возвращающий идентификатор часового пояса IANA для переданного идентификатора часового пояса.
BackendPHP

Не используйте одну и ту же модель для записи и чтения

Модели — отличный инструмент для взаимодействия с хранилищем данных. Можно задать, как выглядят данные, и это гарантирует, что они совместимы с хранилищем данных, обычно базой данных. Когда есть модель, проверяющая вводимые данные и помогающая их записывать, может возникнуть соблазн использовать её и для извлечения данных. За исключением некоторых базовых CRUD-приложений, обычно это не очень хорошая идея. Давайте разберёмся, почему.
BackendPHP

Обновления PHP: Блокируйте регрессии с PHPStan

Часто, когда думают о PHPStan, обычно думают об улучшении Type Coverage. На самом деле это лишь малая часть того, на что способен PHPStan. В этой статье рассмотрим, как использовать его для предотвращения регрессий обновления.
BackendPHPTesting

Синтаксис Pest vs PHPUnit: Примеры expect()

У фреймворка тестирования Pest много поклонников, в основном из-за элегантного, читабельного «англоязычного» синтаксиса. Я покажу три моих любимых примера синтаксиса expect() и сравню аналогичные вещи в Pest vs PHPUnit.
BackendPHPComposer

Как создать PHP пакет

Если хотите создать PHP пакет с нуля и поделиться им с другими PHP разработчиками, Composer — это менеджер зависимостей, упрощающий этот процесс! Благодаря Composer PHP имеет одну из лучших экосистем пакетов. Погрузимся в этот процесс и пройдёмся по шагам создания PHP пакета.
BackendPHP

Зачем нужна типизация массивов в PHP

В PHP уже давно существует возможность типизировать параметры методов и функций. Добавление типов в массивы (и просто добавление типов в целом) поможет при использовании IDE или статического анализа, а также поможет другим разработчикам в команде понять ваш код. Также это поможет избежать ошибок и сделает код чище и читабельнее.
DevOpsPHP

Оптимизация производительности PHP

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

Валидация JSON с JSON Schema и PHP

Простота и гибкость делают JSON идеальным выбором для обмена данными, API и веб-сервисов, конфигурационных файлов, хранения данных и сериализации. Однако такая гибкость может привести к проблемам, если структура данных не будет должным образом проверена. Именно здесь на помощь приходит JSON Schema предоставляющая мощный способ проверки структуры и содержимого данных JSON.
BackendPHPComposer

Composer: Менее известные, но полезные команды

Composer — основной менеджер зависимостей для PHP, и если работаете с PHP, то уже знакомы с такими часто используемыми командами, как composer install и composer update. Composer также предоставляет несколько менее известных, но полезных при работе над приложениями в PHP, команд.
BackendPHP

Магические методы PHP

PHP разработчику, нужно знать множество особенностей языка, чтобы облегчить написание и сопровождение кода. Без явного рассказа о той или иной части языка сложно даже узнать о её существовании, поэтому сегодня поговорим о магических методах, которыми обладают классы, и о том, как их использовать при написании кода.
BackendPHP

Зачем использовать пользовательские исключения в PHP

При создании PHP-приложений исключения играют важную роль в обработке ошибок и сбоев, возникающих во время жизненного цикла приложения. Рассмотрим, как использовать пользовательские исключения для улучшения приложений.
BackendPHP

Как решить проблему PHP Curl с центром сертификации HTTPS в Windows

В Windows запросы HTTPS, выполняемые с помощью расширения Curl, могут не выполняться, поскольку у Curl нет списка корневых сертификатов для проверки сертификатов сервера. Рассмотрим безопасные и эффективные решения, а также обратим внимание на плохие советы, которые могут сделать PHP-приложения небезопасными.
BackendPHP

PHP 8.4: OpenSSL: минимальная требуемая версия увеличена до 1.1.1

Расширение PHP OpenSSL предоставляет функции шифрования, аутентификации, обмена ключами, хэширования паролей и общего хэширования в PHP. Расширение OpenSSL использует библиотеку OpenSSL для обеспечения этой функциональности.
BackendPHP

PHP 8.4: Объявление параметров с неявным nullable объявлено устаревшим

PHP поддерживает объявление типов для параметров функций, возвращаемых значений, свойств классов, констант классов и Enum. Будучи динамически типизированным языком и языком с десятилетиями истории, за прошедшие годы PHP получил ряд улучшений и возможностей.
BackendPHP

Добавление текста к изображению с помощью PHP и GD

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

Хватит использовать устаревшие методы оптимизации в PHP

Прекратите использовать приёмы микрооптимизации в PHP, жертвуя читабельностью кода ради мнимого повышения производительности. Более того, перестаньте учить этим трюкам новичков. В этом нет никакого смысла.
BackendPHP

PHP 8.4: Новые функции http_(get|clear)_last_response_headers

В PHP 8.4 добавлены две новые функции http_get_last_response_headers и http_clear_last_response_headers, которые можно использовать для получения и очистки HTTP-заголовков последнего ответа HTTP-обёртки, что может заменить историческую переменную $http_response_header.
BackendPHP

PHP 8.4: Curl: Минимальная требуемая версия libcurl повышена до 7.61.0

Расширение Curl предоставляет функциональность libcurl в PHP. Хотя расширение Curl можно скомпилировать с любой поддерживаемой версией libcurl, расширение требует определённую минимальную версию libcurl. Это позволяет расширению гарантировать, что определённая функциональность и API всегда будут доступны.
BackendPHP

PHP 8.4: Расширение Pspell перенесено из PHP Core в PECL

Расширение Pspell предоставляет возможности проверки правописания в PHP с помощью Pspell или Aspell. Зависимости этого расширения не получали обновлений в течение последних нескольких лет, и расширение Pspell было перенесено из ядра PHP в расширение PECL в PHP 8.4.
BackendPHP

PHP 8.4: round() — неправильные режимы вызывают исключения

Функция round() округляет значение float до ближайшего целого числа или десятичного значения заданной точности. Она поддерживает тонкую настройку метода округления с помощью дополнительного параметра.
BackendPHP

PHP 8.4: Opcache: Изменения в INI, влияющие на включение JIT

В PHP 8.0 была добавлена поддержка компиляции Just-In-Time. По умолчанию JIT отключена, и есть два переключателя, opcache.jit и opcache.jit_buffer_size, контролирующие режим основной функциональности PHP и размер буфера, разрешённый для использования JIT.
BackendPHP

PHP 8.4: Новые режимы округления в функции round()

Функция round() округляет значение float до ближайшего целого числа или десятичного значения заданной точности. Она поддерживает различные режимы округления, а в PHP 8.4 добавлены четыре новых метода округления.
BackendPHP

Все рекурсивные функции в PHP

Рекурсивная функция — это функция, вызывающая саму себя для решения задачи. Этот тип функций часто используется в ситуациях, когда задачу можно разбить на более мелкие, похожие, но всё же более мелкие задачи. Функция продолжает вызывать себя с изменёнными аргументами до тех пор, пока не будет достигнут базовый случай, после чего функция перестаёт вызывать себя и начинает возвращать значения. Итак, все ли рекурсивные функции в PHP нам известны?
BackendPHP

Nullsafe оператор на практике

Null-safe оператор был добавлен в PHP 8.1: это новый объектный оператор, предотвращающий фатальную ошибку и последующую остановку выполнения при вызове метода или свойства со значением null. Он имеет большую привлекательность, поскольку называется "безопасным" и сокращает количество проверок перед вызовом метода. Однако на практике у оператора nullsafe есть и свои недостатки.
BackendPHP

Продвинутые Value Objects в PHP 8

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

Value Objects в PHP 8: Создание лучшего кода

В мире программирования поддержание чистоты и надёжности кода имеет большое значение. Паттерн Value Objects способен значительно улучшить качество вашего кода, сделав его более надёжным и удобным для сопровождения.
BackendPHP

PHP 8.4: Sodium: Поддержка AEGIS-128L и AEGIS256

AEGIS — это семейство алгоритмов аутентифицированного шифрования на основе AES, которое быстрее, чем AES-GCM. Расширение Sodium в PHP 8.4 поддерживает алгоритмы шифрования AEGIS-128L и AEGIS256, если расширение Sodium скомпилировано с libsodium 1.0.19 или более поздней версии.
BackendPHP

Шифрование AEGIS с расширением PHP Sodium

Расширение Sodium в PHP 8.4 теперь поддерживает шифры аутентифицированного шифрования AEGIS-128L и AEGIS256. Они значительно быстрее, чем AES-GCM и CHACHA20-POLY1305. В этой статье мы сравним их и объясним, как безопасно шифровать и расшифровывать данные с помощью AEGIS-128L и AEGIS256 на PHP.
BackendPHPSecurity

Совет по безопасности: Безопасна ли функция strip_tags()

PHP включает несколько очень удобных функций, ориентированных на безопасность, но вы должны знать, как правильно их использовать, иначе рискуете оставить значительную уязвимость, ожидающую своего применения!
BackendPHPTesting

Тестирование абстрактных классов PHP с помощью анонимных классов

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

Будьте последовательны в использовании скриптов Composer в CI

Сценарии Composer — это очень удобный способ определения команд, которые вы часто используете. Например, у нас есть скрипты composer для запуска тестов, проверки стиля кодирования или обновления хелперов IDE.
BackendPHP

Понимание Value Objects/Объектов Значения в PHP

Value Objects/Объекты Значения — это фантастическая концепция, которую мы можем использовать для улучшения наших приложений. Они представляют собой небольшие объекты, такие как Money, DateRange, Email или Age, которые мы используем в сложных приложениях. Они являются ключевыми элементами при создании эффективного, понятного и сопровождаемого кода.
BackendPHP

Композиция вместо Наследования в PHP

В последнее время в сообществе PHP разработчиков ведутся дебаты о преимуществах и недостатках Композиции и Наследования. В мире объектно-ориентированного программирования (ООП) существует множество мощных инструментов и концепций, каждая из которых имеет свои сильные и слабые стороны и призвана улучшить читаемость, модульность и возможность повторного использования кода.
BackendPHP

Избегайте AOP: Array-Oriented Programming

Массивы — удобный способ организации и передачи данных в PHP-приложениях, но стоит ли это делать? В этой статье я расскажу о минусах злоупотребления использованием ассоциативных массивов и покажу простую альтернативу этому.
BackendPHP

Итерация файлов и каталогов в PHP

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

Менее известные трюки и советы по Composer, которые нужно знать

Менеджер зависимостей Composer является де-факто способом управления зависимостями в PHP-проектах. Вся современная PHP-разработка немыслима без Composer. Но знаете ли вы, что с помощью Composer можно делать многое, кроме установки и обновления зависимостей?
BackendPHP

PHP 8.3: Проблемы безопасности парсинга INI-строк и файлов

PHP предоставляет функции parse_ini_string и parse_ini_file, которые повторно используют встроенный в PHP синтаксический анализатор, применяемый для собственных конфигурационных файлов PHP на основе INI.
BackendPHP

PHP 8.3: Поддержка резервных значений в синтаксисе переменных PHP INI

PHP поддерживает замену значений PHP INI на переменные окружения с помощью синтаксиса строковой интерполяции PHP. Если указанная переменная окружения недоступна, парсер INI использует пустую строку. В PHP 8.3 этот синтаксис расширен для поддержки объявления запасного/fallback значения, если переменная окружения не установлена.
BackendPHP

20 функций PHP, которые вы должны знать в 2023 году

PHP постоянно развивается, и важно быть в курсе последних функций и улучшений. В этой статье представлены 20 функций PHP, которые вы должны знать в 2023 году, каждая из которых проиллюстрирована удобным примером кода.
BackendPHP

Создайте сервис контейнер на PHP — минимальный контейнер

В этой мини статье вы узнаете, как создать сервис контейнер для внедрения зависимостей в PHP. Я начну с самого простого контейнера, совместимого с PSR-11, а затем добавлю различные функции, пока у нас не получиться мощный контейнер общего назначения.
DevOpsPHPLaravelBackend

CGI, FastCGI, php-fpm, nginx и Laravel

Если вы запускаете приложения PHP/Laravel в продакшене, есть большая вероятность, что вы используете некоторые из этих вещей:CGI, FastCGI, php-fpm, nginx и Laravel. Как разработчик, я считаю важным понимать хотя бы основы этих компонентов. Итак, давайте разбираться.
BackendPHP

Использование `declare(strict_types=1)` для повышения надежности кода

Прочитайте о том, как вы можете использовать declare(strict_types=1) для повышения безопасности типов PHP-кода. Мы обсудим, как сделать код более надёжным и избежать принудительного приведения типов, что может привести к ошибкам.
BackendPHP

PHP: Выполнение более строгих проверок

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

Нужно ли комментировать свой код?

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

Клонирование readonly свойств в PHP 8.3

В PHP 8.3 добавлена возможность перезаписи значения readonly свойств при клонировании объекта. Не заблуждайтесь: вы не можете клонировать любой объект и перезаписывать его readonly значения из любого места. Эта функция касается только очень специфического (но важного) пограничного случая.
BackendLaravelPHP

Совместное использование правил PHPCS между проектами и командами

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

PHP: Что такое Интерфейс

Что такое PHP-интерфейс? PHP интерфейс определяет контракт, который должен выполнить класс. Если PHP класс — это схема объектов, то интерфейс — это схема классов. Любой класс реализующий данный интерфейс, будет иметь одинаковое поведение с точки зрения того, что можно вызвать, как его можно вызвать и что будет возвращено.
BackendPHP

PHP: Продление срока службы легаси приложений

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

PHP: Зачем следовать PSR-20

Недавно была выпущена спецификация PHP Standards Recommendation 20, призванная помочь разработчикам использовать общий интерфейс получения системных даты и времени. Это важная рекомендация, если вам необходимо протестировать PHP код, манипулирующий системной датой и временем.
BackendPHP

PHP 7.4: Строгая типизация против Слабой

В PHP 5 ввели объявление типов (также известное как подсказки типов), которые позволяют функциям требовать, чтобы параметры имели определённый тип во время вызова. Если заданное значение имеет неправильный тип, то генерируется ошибка: в PHP 5 — исправимая фатальная ошибка, а в PHP 7 — исключение TypeError.
PHPBackend

PHP 8.3: unserialize() обновление ошибки E_NOTICE до E_WARNING

PHP представляет функции serialize() и unserialize() для сериализации любого значения PHP (строки, целые числа, объекты, NULL, массивы, перечисления и т. д.) и восстановление PHP-значения из этого строкового представления.
BackendPHP

PHP 8.2: Readonly-классы / классы только для чтения

В PHP 8.2 введён новый способ объявления классов: readonly-классы. Поскольку readonly-классы — просто синтаксический сахар для того, что бы сделать все свойства класса доступными только для чтения, это означает, что те же правила применяются и к readonly-классам.
BackendPHP

PHP 8.1: Клонирование и изменение readonly-свойств

В PHP 8.1 введены readonly-свойства. Они избавляют от множества проблем, но и добавляют новую — запрет на переопределение readonly-свойств клонированного объекта. Давайте разберёмся с решением этой проблемы и найдём обходной путь.
PHPBackend

PHP: Интерфейсы vs Абстрактные классы

Недавно я опубликовал статью об улучшении PHP кода с помощью интерфейсов. Она охватывает основы того что такое интерфейс, что он может делать. И как вы можете использовать его сделав свой PHP код более расширяемым и поддерживаемым. Один из вопросов, заданных в комментариях к статье был от разработчиков, которые хотели знать "когда я должен использовать интерфейс вместо абстрактного класса?". Я подумал и решил написать статью, что бы объяснить различия между абстрактными классами и интерфейсами в PHP и дать краткий обзор того, когда вы должны использовать каждый из них.