Заметки разработчика
471 subscribers
672 photos
4 videos
1.17K links
Заметки о Frontend, Backend и немного DevOps. В основном о #PHP, #Laravel, #JavaScript, #HTML, #CSS, тестировании и настройке серверов.

https://www.dev-notes.ru

@snakenf
Download Telegram
Несмотря на то, что HTML 5 существует уже более 16 лет, PHP никогда не поддерживал его должным образом. В PHP есть \DOMDocument, который теоретически должен поддерживать HTML 4, но на самом деле он уже не совместим с HTML 4.

https://www.dev-notes.ru/articles/php/html-5-in-php-84/

#php #php84
👍1
В PHP 8.4 добавлено несколько функций, которых давно не хватало: array_find() и её вариации. Назначение array_find() простое: передайте ей массив и обратный вызов, и получите первый элемент, для которого обратный вызов вернёт true.

https://www.dev-notes.ru/articles/php/array-find-in-php-84/

#php #php84
🔥3
#backend #php #php84 #feature

👩‍💻 Новые функции массива в PHP 8.4

PHP 8.4 выйдет в ноябре 2024 года и представит несколько новых функций для работы с массивами:

array_find
array_find_key
array_any
array_all

Кратко рассмотрим эти новые функции и как их использовать в проектах на PHP 8.4.

Если вы Laravel разработчик, то возможно заметили, что уже есть подобные функции в классах Illuminate\Support\Collection и Illuminate\Support\Arr. Но мне нравится, что эти функции будут встроенными в PHP и поэтому будут доступны в любом PHP-проекте.

Для тех кто разрабатывает в Laravel, я покажу эквиваленты новых функций массивов PHP 8.4 в Laravel, чтобы можно было реализовать тот же функционал в своих Laravel проектах, не дожидаясь выхода PHP 8.4.

🖥 Читать статью

📱 @dev_notes_ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#backend #php #php84 #feature #PropertyHooks

👩‍💻 PHP 8.4 Property Hooks (хуки свойств)

Хуки свойств позволяют определять пользовательскую логику получения и установки свойств класса без необходимости писать отдельные методы получения и установки. Это означает, что можно определить логику непосредственно в объявлении свойства, чтобы получить прямой доступ к свойству (например, $user->firstName) без необходимости помнить о вызове метода (например, $user->getFirstName() и $user->setFirstName()).

Если вы Laravel разработчик, то, читая эту статью, можете заметить, что хуки очень похожи на аксессоры и мутаторы в моделях Laravel.

🖥 Читать статью

📱 @dev_notes_ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 PHP 8.4: Константа E_STRICT объявлена устаревшей

Все ошибки, предупреждения и уведомления в 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


🖥 Читать статью

📱 @dev_notes_ru

#php #php84 #e_strict #deprecation
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
👩‍💻 BCMath: Новая функция bcdivmod

В PHP 8.4 в расширении BCMath представлена новая функция bcdivmod, делящая заданное число на заданный делитель и возвращающая как частное, так и остаток. Результат по сути идентичен вызову функций bcdiv и bcmod.

bcdivmod может быть использован в случаях, когда необходимо получить частное и остаток от деления, и избавляет от необходимости вызывать функции bcdiv и bcmod по отдельности.

Возвращаемое значение — массив, в котором первое значение — частное от деления, а второе — остаток.

🖥 Читать статью

📱 @dev_notes_ru

#php #php84 #bcmath
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
👩‍💻 PHP 8.4: MBString: База данных символов Юникода обновлена до версии 16

Благодаря поддержке 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.

🖥 Читать статью

📱 @dev_notes_ru

#php #php84 #mbstring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
👩‍💻 PHP 8.4: Intl: Новая функция `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 для часового пояса.

🖥 Читать статью

📱 @dev_notes_ru

#PHP #PHP84 #features
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
👩‍💻 PHP 8.4: Curl: Новые константы 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)

🖥 Читать статью

📱 @dev_notes_ru

#PHP #PHP84 #features
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
👩‍💻 Асимметричная видимость PHP свойств

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

🖥 Читать статью

📱 @dev_notes_ru

#PHP #PHP84 #features
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🔥1