Заметки разработчика
473 subscribers
667 photos
4 videos
1.16K 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
👩‍💻 PHP 8.4: exit/die изменены из языковых конструкций в функции

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

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

📱 @dev_notes_ru

#PHP #PHP84 #features
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 PHP 8.4: Curl: 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.

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

📱 @dev_notes_ru

#PHP #PHP84 #Curl #features
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 PHP 8.4: Curl: Новая опция CURLOPT_PREREQFUNCTION

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

Обратный вызов CURLOPT_PREREQFUNCTION вызывается после установления начального соединения и перед отправкой запроса. Например, при запросе HTTPS обратный вызов CURLOPT_PREREQFUNCTION вызывается после установления HTTPS-соединения (DNS + TCP + TLS), перед отправкой фактического HTTP-запроса.

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

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

📱 @dev_notes_ru

#PHP #PHP84 #Curl #features
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 PHP 8.4: Curl: Новая опция 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.

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

📱 @dev_notes_ru

#PHP #PHP84 #Curl #features
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 PHP 8.4: Curl: Новая опция CURLOPT_DEBUGFUNCTION

Curl предоставляет опцию CURLOPT_DEBUGFUNCTION для установки пользовательской функции обратного вызова, вызываемой вместо стандартной функции вывода сообщений.

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

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

Расширение PHP 8.4 Curl предоставляет эту опцию libcurl как опцию CURLOPT_DEBUGFUNCTION (для curl_setopt), принимающую значение PHP callable.

Обратный вызов вызывается несколько раз во время запроса Curl, и обратный вызов может решить, что делать с этой информацией.

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

📱 @dev_notes_ru

#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
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍1
👩‍💻👩‍💻👩‍💻 Руководство по установке и обновлению PHP 8.4 для Ubuntu и Debian

В 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 и их производных.

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

📱 @dev_notes_ru

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