LINUX.ORG.RU

PHP 8.4 — большое обновление языка

 

PHP 8.4 — большое обновление языка

1

2

Новая версия содержит множество новых возможностей, таких как хуки свойств, асимметричная область видимости свойств, обновление DOM API, улучшена производительность, исправлены ошибки и многое другое.

Основные изменения

  • Хуки свойств обеспечивают поддержку вычисляемых свойств, которые могут быть понятны IDE и инструментам статического анализа, без необходимости писать DocBlock-комментарии, которые могут не совпадать. Кроме того, они позволяют выполнять надёжную предварительную или последующую обработку значений, без необходимости проверять, существует ли в классе соответствующий геттер или сеттер.
  • Асимметричная область видимости записи свойства теперь может контролироваться независимо от области видимости чтения свойства, что уменьшает необходимость использования шаблонных методов-геттеров для раскрытия значения свойства без возможности его изменения извне класса.
  • Новый атрибут #[\Deprecated] расширяет существующий механизм объявления сущности устаревшей для пользовательских функций, методов и констант классов.
  • Новый DOM API, который поддерживает разбор HTML5-документов в соответствии со стандартами, исправляет несколько давних ошибок в поведении DOM и добавляет несколько функций, делающих работу с документами более удобной. DOM API доступен в пространстве имён Dom. Документы, использующие новый DOM API, могут быть созданы с помощью классов Dom\HTMLDocument и Dom\XMLDocument.
  • Новый объект BcMath\Number позволяет использовать объектно-ориентированный стиль и стандартные математические операторы при работе с числами произвольной точности. Эти объекты неизменяемы и реализуют интерфейс Stringable, поэтому их можно использовать в строковых контекстах, например, echo $num.
  • Добавлены функции array_find(), array_find_key(), array_any() и array_all().
  • Добавлены дочерние классы Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql, Pdo\Sqlite драйверов, наследующие PDO.
  • К свойствам и методам только что инициализированного объекта теперь можно обращаться, не оборачивая выражение new в круглые скобки. Пример: new MyClass()->method() без скобок.
  • Новые классы, интерфейсы и функции и многое другое…

>>> Подробности

★★

Проверено: CrX ()
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от splinter

Можно продолжать писать в стиле php4, но популярные проекты такие как Symfony и Laravel это все ООП. Почти все расширения поддерживают процедурный стиль, и ООП стиль одновременно.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от MOPKOBKA

Ты из 1960х пишешь?

СПб, окрестности, частный сектор, ближайшая и единственная школа в 20 км. Так живут тысячи семей даже вокруг крупнейших городов РФ (можете посмотреть на карте, сколько вокруг СПб небольших населённых пунктов типа Разбегаево, Олик, Оржиц, Ропш и пр. Павлово), не говоря уже про половину населения мелких, вроде Великих Лук или Старых Ладог.

Опустим про дрова и радиоточку, смартфон тоже можно программировать.

Можно, на Джаве. Но не нужно и очень специфично. К тому же ОЧЕНЬ неудобно делать это непосредственно на смартфоне.

mister_VA ★★
()
Ответ на: комментарий от MOPKOBKA

курс биткоина получили

Ещё раз, зачем? Вы это МНЕ, взрослому человеку, объяснить не можете, а хотите, чтобы в тему въехал какой-нибудь семиклассник лил, ещё сложнее, семиклассница?

Я уже написал

Нет, некие надуманные задачи, решаемые за 2 мин вообще без привлечения программирования, не считаются.

А нужность в алгоритмах ради алгоритмов вообще отсутствует.

Таки речь идёт об ОЗНАКОМЛЕНИИ детей с программированием, чтобы они понимали, что такое цикл с, ветвление, выбор, линейный, чтобы если и когда захотят заняться программированием и откроют книжку по ЯП, их не ставили в тупик пассажи «в Си есть три вида операторов цикла» или «циклы в Си имеют вид».

Автоматизация действий на компьютере это интересно.

Кому как, я вот за компьютерами уже 35 лет, однако особой надобности в автоматизации «рутинных задач» не имею, потому как рутинные задачи не автоматизируются, увы. Потому к компам всё ещё требуется некий оператор-человек.

Можно еще g-код изучать, тоже сразу видно применение.

Это типа без возможности получить в руки 3d-принтер? И не имея необходимости на нём что-либо печатать? Причём никогда в последующей жизни?

mister_VA ★★
()
Ответ на: комментарий от mister_VA

Зачем этот навык 99,99% людей, которые никогда в жизни не будут нуждаться в умении что-то запрограммировать?

А почему ты решил, что не будут? Большинство людей ничего не программирует, потому что не знает как, а не потому что нет потребности. Практически в любой работе, где участвует комп, пригодится умение заскриптовать что-то по-быстрому на условном питоне.

почему именно английским

Лингва фанка нашего времени.

Разве вы не знаете японский

Ну я немножко знаю.

Я вот сталкивался с задаваемыми мне вопросами на китайском, японском, хинди, финском, немецком австрийского извода, испанском, португальском.

И что? Практически всегда можно перейти на английский.

no-such-file ★★★★★
()
Ответ на: комментарий от splinter

С того времени их пхп сделали нормальный язык: оптимизировали рантайм по скорости и по памяти, сделали utf8 внутренней кодировкой, опционально добавили статическую и сильную типизации, насыпали сахара в синтаксис, напилили утилит для разработки. В общем, работать с языком стало намного приятнее, отторжение уже не вызывает.

amm ★★
()
Ответ на: комментарий от windows10

$months = «JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC»;
$x = explode(",", $months);
for (i = 0; $i<12; i++) {
echo «month = $x[$i] \n»;
}

Ради справедливости, на Qt выглядит практически так же, хоть и плюсы:

QString months = "JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC";
auto x = months.split(",");
for (const auto &month : x) {
    qDebug() << "month=" << month;
}

Xintrea ★★★★★
()
Ответ на: комментарий от Norgat

Не вижу возможностей для повышение его интеллектуального уровня.

Все что ему нужно для повышения уровня сейчас - это больше контекста в решаемых задачах

А если GPT будет автоматически пропускать сгенерированный код хотя бы через лексический анализатор (хотя можно и компильнуть), увидит ошибки, подправит их, то результат будет гораздо лучше. А еще лучше если на каждый запрос GPT будет продумывать не только код, но и как организовать проверку получаемых данных, и будет ее тоже генерировать и запускать, то качество ответов будет вообще абсолютно идеальным.

Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

Расскажу страшное - они так уже делают с python. Берешь парочку CSV, XLSX файлов, пихаешь в ChatGPT, говоришь - обработай вот так. И он выплевывает тебе обработанный файл + скрипт на питоне которым это сделал.

Norgat ★★★★★
()
Ответ на: комментарий от no-such-file

Практически в любой работе, где участвует комп

Так практически у всех людей работа с компом и не связана. А у тех, что связана, часто связаны руки, даны в ощущениях несколько кнопок или пунктов меню, движение «мышкой» за которые – выговор с занесением в грудную клетку.

Практически всегда можно перейти на английский.

Вот только ихний английский я не понимаю, а они не понимают моего. Даже простейшего, что часто бывает с азиатами. Не помогает даже использование программ-переводчиков в смартфонах.

mister_VA ★★
()
Ответ на: комментарий от windows10

Как там тебе живётся в 2000-м? Линукс когда уже начнёт usb поддерживать?

Я подобный код где-то как раз в 2000-м и видел. Когда думал можно на него для с перла перелезать или ещё пока рано.

r_asian ★☆☆
()

long live php

umren ★★★★★
()
Ответ на: комментарий от Somebody

Аналогично, кстати. Правда у меня firefox. Но документация открывается, всё показывается, даже не тормозит ничего и память не выжирает, как некоторые сайты.

CrX ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.