LINUX.ORG.RU

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

 

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

1

3

Новая версия содержит множество новых возможностей, таких как хуки свойств, асимметричная область видимости свойств, обновление 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)
Ответ на: комментарий от firkax

Я не хейтер, и более того я одобряю пхп, а ты нуб и не умеешь читать.

Как правило когда у людей заканчиваются аргументы и они никак не хотят признать что они наркоманы, они переходят на личности.
КросссафффчЕГ…! Что же мы тут все тупые с тобой спорим? Ай да молодцы лучше нубить будем, да щи лаптем хлебать. Куда нам с мусье в сообразительности тягаться…

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

Как правило когда у людей заканчиваются аргументы

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

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

Всё! Я обиделся, заплакал и выключил компьютер

Shprot ★★
() автор топика
Ответ на: комментарий от alt-tab-let

Да. Я вообще в php-фреймворках не вкурсе, интересно.

А мне показалось что ты троллишь.

1. Фреймворк - это продукт написанный на языке программирования;

2. Вопрос «если ли продукт написанный на одном языке программирования, под другим языком программирования» - априори абсурден, как абсурдно и сравнение языков по наличию этого продукта. А у тебя на айфоне есть настройки андроида как у меня на ксяоми? Нет? Говно этот твой айфон, даже настроек андроида нет. Примерно твоя логика;

3. Фреймворк - это набор рутинных функций, упрощающий создание конечного продукта и по возможности абстрагирующий разработчика от низкоуровневого кода. Поэтому вопрос твой должен звучать «есть в ли PHP фреймворк, для упрощения разработки приложений класса Х».

Тогда бы мы улыбнулись и ответили, что твой Flask сделан на коленке для школьников, а здесь юзают титанов с мировым именем - Laravel, Symphony, Yii, и еще десяток которые я не помню, потому что PHP использую для написания компонентов ОС.

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

Так что если PHP и С находятся в разных нишах и в принципе не конкурируют друг с другом, то Питону здесь ловить нечего, кроме разве что помочь разрабу быть нитакусиком.

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

очевидно что переменная a в данном контексте содержит значение «JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC».
далее, для упоротых - разверну,

a = "JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC"
a.split(',').each do |t| puts t end

etwrq ★★★★★
()

В пшп уродские методы работы с XML, Domdocument не совместим с XPath.

Плюс, мне в языке не хватает File-Concatenate / inode-merge – я в самодельной CMS симулирую работу БД, и такая функция мне была бы полезна.

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

Шо самое интересное, хейтят PHP в основном по религиозным причинам.

Совершенно согласен. Ведь всякому истинно верующему должно быть хорошо известно, что единственный Ъ-язык, благодатный Perl, уже был сниспослан нам пророком Ларри Уоллом, и ничего другого человеку не нужно. PHP это не более чем секта еретиков и отщепенцев, которая не смогла узреть свет благодати перловой.

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

Родственник перла - это недостаток, а не преимущество. Вопреки перлу вышел хороший язык.

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

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

Хуки свойств - подсмотрели у Kotlin

Все всё подсмотрели у ЛИСП из 80-х.

Лично мне больше интересен новый jit-компилятор и ленивые объекты.

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

непоследовательный дизайн

Можно предъявить любому языку который используется на практике и существует более 10 лет. Хотя бы потому, что даже если автор был гением и использовал академический подход к дизайну языка, то за 10 лет многое поменялось и то что было логичным идеалом, стало странным архаичным говном.

Тот документ, 12-летней давности суммировал опыт использования пыха за предыдущие 10 лет. Итого мы имеем устаревшие на 20 лет тезисы. Любому кто тыкает этим документом можно в ответ тыкать утверждением «640 килобайт хватит всем» и т.п.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)
Ответ на: комментарий от Norgat

сравнивать надо с каким-нибудь python, где будет

Ты не поверишь…

foreach(explode(',', 'JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC') as $m) echo "month = {$m}\n";

Найдите 10 отличий (с)

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от alt-tab-let

Я вообще в php-фреймворках не вкурсе, интересно.

В пыхе щас дрочат на стандарты (PSR), так что можно надёргать разных компонентов через composer и собрать свой условный flask. Для примера можешь потыкать slim или flight.

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

Так мысль не в этом была, а в том, что сравнивать седан с камазом бессмысленно)

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

А теперь давай посчитаем сколько CMS есть на PHP и Python.

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

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

Тогда бы мы улыбнулись и ответили, что твой Flask сделан на коленке для школьников, а здесь юзают титанов с мировым именем - Laravel, Symphony, Yii, и еще десяток которые я не помню, потому что PHP использую для написания компонентов ОС.

Пхп-фреймворки не нужны, в нём всё нужное есть в самом языке. А фреймворки пишут графоманы и каргокультисты других языков.

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

ru.php:

<?php
function out() {
echo "Привет, мир";
}
en.php:

<?php
function out() {
echo "Hello, world";
}

index.php:

<?php
$lang = "en";
// Можно сделать сложно
if ($lang=="en") {include("en.php");}
if ($lang=="ru") {include("ru.php");}
// А можно проще
include("$lang.php");
out();

Более того, тупорылый пистон, скорее всего, с вероятностью в 99% скажет в таком случае что-то типа «Функция out() undefined» или что-то в этом роде, еще на этапе запуска, хотя согласно визуально-очевидному алгоритму это неправда.

Но интересно увидеть изящный аналог этого на питоне.

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

Пхп-фреймворки не нужны, в нём всё нужное есть в самом языке. А фреймворки пишут графоманы и каргокультисты других языков.

100%, но людям же хочется.

Впрочем в самой концепции фреймворка не вижу ничего плохого. Вот эти которые 3rd-party я не использую, но для своих небольших поделий пишу их как врапперы для того чтобы абстрагироваться от динамически изменяющегося кода.

Условно говоря проще один раз написать функцию типа «select_from» для запроса с БД, юзать ее в коде, и менять во фреймворке в зависимости от версии пыха, а то и типа БД. Чем менять mysql_query на mysqli_query в коде.

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

Используя пример, что я дал выше:

ru.py

def foo(): print('Привет, мир')

en.py

def foo(): print("Hello, world!")

swap.py

import importlib

def call_foo(lang):
  importlib.import_module(f'{lang}').foo()

call_foo('ru')
call_foo('en')

Вызов:

PS D:\kyc\test> python .\swap.py
Привет, мир
Hello, world!

В примере, файлы ru.py, en.py, swap.py лежат в одной директории. Это все так же можно поменять, как и добавить еще директорий для поиска модулей.

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