Несмотря на то, что HTML 5 существует уже более 16 лет, PHP никогда не поддерживал его должным образом. В PHP есть
https://www.dev-notes.ru/articles/php/html-5-in-php-84/
#php #php84
\DOMDocument, который теоретически должен поддерживать HTML 4, но на самом деле он уже не совместим с HTML 4.https://www.dev-notes.ru/articles/php/html-5-in-php-84/
#php #php84
Заметки разработчика
Поддержка HTML 5 в PHP 8.4
В PHP 8.4 добавлен новый парсер, совместимый с HTML5
👍1
В PHP 8.4 добавлено несколько функций, которых давно не хватало:
https://www.dev-notes.ru/articles/php/array-find-in-php-84/
#php #php84
array_find() и её вариации. Назначение array_find() простое: передайте ей массив и обратный вызов, и получите первый элемент, для которого обратный вызов вернёт true.https://www.dev-notes.ru/articles/php/array-find-in-php-84/
#php #php84
Заметки разработчика
array_find в PHP 8.4
В PHP 8.4 добавлено несколько функций, которых давно не хватало: array_find() и её вариации.
🔥3
#backend #php #php84 #feature
👩💻 Новые функции массива в PHP 8.4
PHP 8.4 выйдет в ноябре 2024 года и представит несколько новых функций для работы с массивами:
✅
✅
✅
✅
Кратко рассмотрим эти новые функции и как их использовать в проектах на PHP 8.4.
Если вы Laravel разработчик, то возможно заметили, что уже есть подобные функции в классах
Для тех кто разрабатывает в Laravel, я покажу эквиваленты новых функций массивов PHP 8.4 в Laravel, чтобы можно было реализовать тот же функционал в своих Laravel проектах, не дожидаясь выхода PHP 8.4.
🖥 Читать статью
📱 @dev_notes_ru
PHP 8.4 выйдет в ноябре 2024 года и представит несколько новых функций для работы с массивами:
array_findarray_find_keyarray_anyarray_allКратко рассмотрим эти новые функции и как их использовать в проектах на PHP 8.4.
Если вы Laravel разработчик, то возможно заметили, что уже есть подобные функции в классах
Illuminate\Support\Collection и Illuminate\Support\Arr. Но мне нравится, что эти функции будут встроенными в PHP и поэтому будут доступны в любом PHP-проекте.Для тех кто разрабатывает в Laravel, я покажу эквиваленты новых функций массивов PHP 8.4 в Laravel, чтобы можно было реализовать тот же функционал в своих Laravel проектах, не дожидаясь выхода PHP 8.4.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#backend #php #php84 #feature #PropertyHooks
👩💻 PHP 8.4 Property Hooks (хуки свойств)
Хуки свойств позволяют определять пользовательскую логику получения и установки свойств класса без необходимости писать отдельные методы получения и установки. Это означает, что можно определить логику непосредственно в объявлении свойства, чтобы получить прямой доступ к свойству (например,
Если вы Laravel разработчик, то, читая эту статью, можете заметить, что хуки очень похожи на аксессоры и мутаторы в моделях Laravel.
🖥 Читать статью
📱 @dev_notes_ru
Хуки свойств позволяют определять пользовательскую логику получения и установки свойств класса без необходимости писать отдельные методы получения и установки. Это означает, что можно определить логику непосредственно в объявлении свойства, чтобы получить прямой доступ к свойству (например,
$user->firstName) без необходимости помнить о вызове метода (например, $user->getFirstName() и $user->setFirstName()).Если вы Laravel разработчик, то, читая эту статью, можете заметить, что хуки очень похожи на аксессоры и мутаторы в моделях Laravel.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Все ошибки, предупреждения и уведомления в PHP имеют уровень ошибки, и с помощью функций
error_reporting и set_error_handler PHP приложения могут контролировать, о каких ошибках сообщается, и переопределять поведение обработки ошибок по умолчанию с помощью обратного вызова.PHP имеет широкий диапазон уровней ошибок, причём константа
E_ALL является битовой маской OR всех констант E_, что означает установку сообщения об ошибках или обработчика ошибок для сообщения/обработки всех ошибок, предупреждений и уведомлений.Одним из уровней ошибок, ранее выдаваемых PHP, был
E_STRICT, когда код не был строго корректным, чтобы обеспечить совместимость и дальнейшее развитие. В PHP 7.0 большинство существующих предупреждений E_STRICT были преобразованы в E_NOTICE, а начиная с PHP 8.0 все предупреждения E_STRICT были преобразованы в E_NOTICE.Поскольку все уведомления
E_STRICT были преобразованы в E_NOTICE начиная с PHP 8.0, в PHP 8.4 константа E_STRICT объявлена устаревшей.error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT); // Constant E_STRICT is deprecated
#php #php84 #e_strict #deprecation
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
bcdivmodВ PHP 8.4 в расширении BCMath представлена новая функция
bcdivmod, делящая заданное число на заданный делитель и возвращающая как частное, так и остаток. Результат по сути идентичен вызову функций bcdiv и bcmod.bcdivmod может быть использован в случаях, когда необходимо получить частное и остаток от деления, и избавляет от необходимости вызывать функции bcdiv и bcmod по отдельности.Возвращаемое значение — массив, в котором первое значение — частное от деления, а второе — остаток.
#php #php84 #bcmath
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Благодаря поддержке Unicode 16 расширение MBString может работать со всеми новейшими символами Emoji, а также имеет самую актуальную информацию о смене регистра и ширине символов.
Расширение MBString содержит подмножество данных из спецификации Unicode, используемое для таких операций, как преобразование заданной строки в верхний или нижний регистр, определение ширины строки (удобно для некоторых восточноазиатских шрифтов) и т.д.
В PHP 8.3 расширение MBString включало данные стандарта Unicode 14.0, выпущенного в сентябре 2022 года. В PHP 8.4 источник данных Unicode Character Database (UCD) был обновлён с 14.0 до 16.0, выпущенного в 2024 сентябре. Unicode 16.0 — это последняя версия UCD, доступная на этот момент.
В версии Unicode 15.0, 15.1 и 16.0 добавлено 4 489, 627 и 5 185 новых символов. Кроме того, три версии Unicode вместе взятые поддерживают 11 дополнительных скриптов. Однако для расширения MBString важны обновления в правилах сложения регистра символов, влияющие на такие функции, как
mb_strtolower, mb_strtoupper и назначение значения восточноазиатской ширины, определяющее, считается ли данный символ нормальной ширины или широким (mb_strwidth).Прямых изменений в функциях MBString нет. Данные символов Юникода являются частью самого расширения MBString и будут использоваться во всех функциях PHP 8.4.
#php #php84 #mbstring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
intltz_get_iana_id` и метод `IntlTimeZone::getIanaID()`Расширение Intl в PHP 8.4 предоставляет новую функцию
intltz_get_iana_id и новый статический метод IntlTimeZone::getIanaID() в классе IntlTimeZone, возвращающий идентификатор часового пояса IANA для переданного идентификатора часового пояса.В большинстве ситуаций возвращаемое значение совпадает с переданным идентификатором часового пояса. Однако в ситуациях, когда данный идентификатор часового пояса устарел или заменён другим идентификатором часового пояса, новая функция/метод поможет канонизировать идентификатор часового пояса.
Например, часовой пояс для Кипра,
Asia/Nicosia, иногда используется как Europe/Nicosia. Новая функция intltz_get_iana_id и метод IntlTimeZone::getIanaID() обеспечивают простой способ поиска подобных несоответствий и получения правильного идентификатора IANA для часового пояса.#PHP #PHP84 #features
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
CURL_HTTP_VERSION_3 и CURL_HTTP_VERSION_3ONLY для поддержки HTTP/3Расширение PHP Curl способно выполнять HTTP/3 (также известный как QUIC) HTTP-запросы, если расширение Curl скомпилировано с зависимостями, необходимыми для HTTP/3.
Для расширения Curl в PHP 8.4 требуется libcurl 7.61.0 или более поздняя версия. Для поддержки HTTP/3 Curl требуется libcurl 7.66.0 или более поздняя версия.
Начиная с версии PHP 8.2 и выше, можно включить поддержку HTTP/3, передав корректные параметры в опцию Curl
CURLOPT_HTTP_VERSION.В PHP 8.4 расширение Curl объявляет две новые PHP константы, являющиеся параметрами для опции Curl
CURLOPT_HTTP_VERSION.CURL_HTTP_VERSION_3 (значение int 30)CURL_HTTP_VERSION_3ONLY (значение int 31)#PHP #PHP84 #features
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Одной из менее заметных функций, появившихся в PHP 8.4, является ассиметричная видимость PHP свойств. Это обновление текущей видимости, а также ряд усовершенствованных возможностей по сравнению с
readonly, хуками свойств или магическими методами. Это не для всех, но может оказаться весьма полезным. Давайте посмотрим!#PHP #PHP84 #features
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1
exit/die изменены из языковых конструкций в функцииКлючевое слово
exit и его псевдоним die — языковые конструкции, выводящие сообщение и завершающие текущий сценарий. В CLI-приложениях exit/die можно использовать для завершения работы приложения с заданным кодом выхода.#PHP #PHP84 #features
Please open Telegram to view this post
VIEW IN TELEGRAM
curl_getinfo - поддержка CURLINFO_POSTTRANSFER_TIME_TФункция
curl_getinfo в расширении Curl возвращает список информации о запросе Curl. Также можно передать параметр в функцию, чтобы получить конкретную информацию о запросе.Начиная с версии Curl 8.10.0, Curl может возвращать время, прошедшее с момента начала запроса до отправки последнего байта (иначе называемое post time). Это может быть удобным способом измерением длительности в некоторых запросах, таких как загрузка файла в удалённую HTTP-форму, загрузка файла по FTP и т.д.
PHP 8.4 предоставляет эту возможность, если в системе установлена libcurl 8.10.0 или более поздняя версия. Длительность запроса можно получить в виде ключа
posttransfer_time_us в возвращаемом значении curl_getinfo или передав новую константу CURLINFO_POSTTRANSFER_TIME_T в функцию curl_getinfo.#PHP #PHP84 #Curl #features
Please open Telegram to view this post
VIEW IN TELEGRAM
CURLOPT_PREREQFUNCTIONРасширение Curl в PHP 8.4 представляет новую опцию
CURLOPT_PREREQFUNCTION, позволяющую задать пользовательский callable для принятия решения о продолжении или прерывании запроса. Эта возможность доступна, если расширение собрано с libcurl 7.80.0 или более поздней версии.Обратный вызов
CURLOPT_PREREQFUNCTION вызывается после установления начального соединения и перед отправкой запроса. Например, при запросе HTTPS обратный вызов CURLOPT_PREREQFUNCTION вызывается после установления HTTPS-соединения (DNS + TCP + TLS), перед отправкой фактического HTTP-запроса.Этот обратный вызов может быть удобен в ситуациях, когда приложению необходимо определить, следует ли обрабатывать соединение в зависимости от IP-адреса и порта источника и получателя.
#PHP #PHP84 #Curl #features
Please open Telegram to view this post
VIEW IN TELEGRAM
CURLOPT_TCP_KEEPCNTРасширение PHP 8.4 Curl представляет новую опцию Curl с названием
CURLOPT_TCP_KEEPCNT, устанавливающую максимальное количество запросов TCP keep-alive.По умолчанию значение опции равно 9, но с помощью
CURLOPT_TCP_KEEPCNT можно увеличить или уменьшить максимальное количество зондов keep-alive.Опция принимает любое значение
int, равное 0 или выше. Попытка установить недопустимое значение приводит к тому, что вызов curl_setopt возвращает false.#PHP #PHP84 #Curl #features
Please open Telegram to view this post
VIEW IN TELEGRAM
CURLOPT_DEBUGFUNCTIONCurl предоставляет опцию
CURLOPT_DEBUGFUNCTION для установки пользовательской функции обратного вызова, вызываемой вместо стандартной функции вывода сообщений.Когда выполняется запрос Curl, настройка подробного вывода выводит дополнительную отладочную информацию в течение всего времени выполнения запроса, что может быть удобно для отладки неудачных запросов Curl или для ведения лога запросов Curl.
Curl также предоставляет опцию
CURLOPT_DEBUGFUNCTION для установки пользовательской функции обратного вызова, вызываемой вместо стандартной функции вывода сообщений. Когда приложению требуется больше контроля над обработкой подробной отладочной информации, эта опция может быть полезна.Расширение PHP 8.4 Curl предоставляет эту опцию libcurl как опцию
CURLOPT_DEBUGFUNCTION (для curl_setopt), принимающую значение PHP callable.Обратный вызов вызывается несколько раз во время запроса Curl, и обратный вызов может решить, что делать с этой информацией.
#PHP #PHP84 #Curl #features
Please open Telegram to view this post
VIEW IN TELEGRAM
Вышел PHP 8.4 🎉
🖥 Страница релиза
👩💻 Страница загрузки бинарников под Windows
Вчера тэгнули PHP 8.4.1, а 8.4.0 вышел ещё позавчера вечером. Возможно, что-то напутали с тэгами🤷♂️
📱 @dev_notes_ru
#PHP #PHP84 #release
Вчера тэгнули PHP 8.4.1, а 8.4.0 вышел ещё позавчера вечером. Возможно, что-то напутали с тэгами
#PHP #PHP84 #release
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍1
В PHP 8.4 появилось несколько новых функций, улучшена безопасность, повышена производительность, но при этом не обошлось и без устаревания и удаления функций.
Это руководство показывает, как установить PHP 8.4 или обновить его до PHP 8.4 на Ubuntu, Debian или их производных. Хотя можно скомпилировать PHP из исходных текстов, установка из APT-репозитория, как описано ниже, зачастую быстрее и безопаснее, поскольку эти репозитории будут предоставлять последние исправления ошибок и обновления безопасности в будущем.
PHP 8.4 недоступен в текущих репозиториях Debian и Ubuntu. В руководстве используются репозитории, поддерживаемые Ondřej Surý. PHP-репозитории Ondrej'а уже несколько лет являются де-факто репозиториями для PHP в Ubuntu, Debian и их производных.
#DevOps #PHP #PHP84
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1