В отличие от ранней версии Java, цикл выпуска которой составлял один год, последняя версия PHP 8.4 была официально выпущена 19 ноября, даже раньше, чем первоначально планировалось 21 ноября, а на день позже, 20 ноября, была выпущена версия 8.4.1. .
Tencent также имела очень большой опыт в выборе PHP на заре, и в прошлом мы опубликовали ряд технических статей, посвященных рефакторингу PHP. Какими будут будущие перспективы развития PHP: от лучшего языка программирования в мире до постепенного упадка? Крупные производители постепенно заменяют PHP в своем выборе технологий. Означает ли это, что PHP больше не нужен? Какое новое влияние принесут новые функции, выпущенные на этот раз?
Следите за разработчиками Tencent Cloud и заранее получайте техническую информацию из первых рук👇
1.1 Хуки свойств Хуки свойств
Хуки свойств Возможно, одно из самых больших изменений в современной истории PHP: Хуки свойств обеспечивают поддержку вычисляемых свойств, которые могут быть поняты непосредственно IDE и инструментами статического анализа без необходимости писать потенциально недопустимые комментарии к блоку документации. Кроме того, они позволяют надежно предварительно или постобрабатывать значения без проверки наличия в классе соответствующего метода получения или установки.
Пример:
class BookViewModel
{
public function __construct(
private array $authors,
) {}
public string $credits {
get {
return implode(', ', array_map(
fn (Author $author) => $author->name,
$this->authors,
));
}
}
public Author $mainAuthor {
set (Author $mainAuthor) {
$this->authors[] = $mainAuthor;
$this->mainAuthor = $mainAuthor;
}
get => $this->mainAuthor;
}
}
1.2 Без скобок Цепочка методов без скобок
Новая версия PHP попрощалась с избыточными круглыми скобками в цепочках методов. Теперь разработчики могут опускать круглые скобки при непосредственном вызове методов вновь созданных объектов, что упрощает написание цепочек методов.
Пример кода:
до:
$name = (new ReflectionClass($objectOrClass))->getShortName();
Сейчас:
$name = new ReflectionClass($objectOrClass)->getShortName();
1.3 Асимметричная видимость Асимметричная видимость
Областью записи свойств и областью чтения свойств теперь можно управлять независимо, что снижает необходимость писать громоздкие методы получения для предоставления значений свойств, не позволяя изменять свойство извне класса.
Пример кода:
class ReadOnlyProperty {
public string $data get;
private string $data set;
}
1.4 Новые функции array_*()
Новые функции array_find(), array_find_key(), array_any() и array_all().
Пример кода:
$numbers = [1, 2, 3, 4];
$found = array_find($numbers, fn($n) => $n > 2);
echo $found; // Выход: 3
1.5 Новая поддержка HTML5
В PHP 8.4 добавлен класс \DOMDocument, который может правильно анализировать код HTML5. Старый класс \DOMDocument по-прежнему доступен для обратной совместимости.
Пример кода:
$doc = \Dom\HTMLDocument :: createFromString($contents);
Другие обновления основных функций можно найти на официальном сайте: https://www.php.net/releases/8.4/zh.php.
2.1 Былая слава ушла
Язык PHP родился в 1995 году. Первоначально это был просто скриптовый инструмент для обработки HTTP-форм. В последующих версиях была добавлена поддержка запросов к базе данных MySQL, и постепенно он стал независимым языком разработки веб-проектов. С быстрым развитием Интернета PHP стал популярным благодаря простоте изучения и использования, а также сильному сообществу разработчиков, и стал одним из основных языков для разработки интернет-приложений. В сочетании с Linux, MySQL и Apache он, называемый стеком технологий LAMP, оказал огромное влияние на Интернет и постепенно стал основной технической архитектурой для создания динамических веб-сайтов и приложений. По статистике W3C, почти 78% из них. Всемирные веб-сайты разрабатываются на основе PHP Constructed.
Стоит отметить, что PHP, благодаря своей низкой стоимости, простоте использования, гибкости, масштабируемости и процветающей экосистеме веб-технологий, когда-то занимал важную позицию в области разработки программирования, идя в ногу с языком Java.
С появлением новых технологий, таких как мобильный Интернет, облачные вычисления и искусственный интеллект, системы программного обеспечения Интернета становятся все более и более сложными. Крупномасштабные веб-системы предъявляют все более высокие требования к высокой параллельности и доступности. По сравнению с PHP, Java имеет типобезопасность, лучшую производительность, технологию многопоточного пула соединений, более строгие спецификации программирования, а также более зрелые решения и экосистему в управлении сервисами. Многие технические команды предпочитают использовать Java для создания веб-систем вместо PHP.
Кроме того, с появлением новых языков программирования, таких как Node.js, Golang и т. д., они получили преимущества, которых нет у PHP в некоторых аспектах, таких как статическая компиляция, лучшая производительность и асинхронное программирование. Эти языки программирования также процветают и используются все большим количеством разработчиков.
Индекс TIOBE в этом году показывает, что популярность PHP упала до рекордно низкого уровня, заняв 17-е место. В то же время, согласно ежегодному отчету опроса разработчиков Stack Overflow, популярность PHP среди разработчиков упала с примерно 30% до 18. % сейчас.
2.2 Преобразование под руководством сообщества
Взлет и падение языка программирования неотделимы от среды, в которой он работает. Точно так же, как Java, доминирующий язык программирования корпоративного уровня, также подвергся сомнению со стороны языка Go в эпоху облачных технологий. Есть замечания, которые очерняют Java. каждый год, но Java нет. Он по-прежнему силен, но это не означает, что сообщество Java не внесло изменений, чтобы соответствовать требованиям новой эпохи.
Java обычно разрабатывается для крупномасштабных, долго работающих серверных приложений. Наиболее характерные технические особенности Java, такие как компиляторы «точно в срок», оптимизация, ориентированная на производительность, и подсистемы сбора мусора — все они предназначены для облегчения длительной работы. Наслаждайтесь преимуществами разработки аппаратного обеспечения. Однако тенденция развития микросервисов в эпоху облачных технологий показывает, что кластерам сервисов высокой доступности не требуется, чтобы один сервис работал круглосуточно, 7 дней в неделю, и их можно прервать и обновить в любое время.
Таким образом, в условиях таких фоновых проблем сообщество Java запустило ряд важных проектов, таких как Project Leyden, Valhalla, Loom и Portola, и начало трансформацию, которую можно назвать разворотом авианосца.
То же самое относится и к PHP. Версия 8.4, выпущенная на этот раз, представляет собой не только набор новых функций, но и представляет собой большой шаг для того, чтобы PHP стал более современным, эффективным и удобным для разработчиков.
Иностранные разработчики положительно отозвались об этом выпуске PHP, приближающемся к Java:
2.3 Стоит ли изучать PHP?
По сравнению с современными основными языками программирования Java, Python, C++ и новыми популярными языками программирования, такими как Node.js, Rust, Golang и т. д., PHP имеет свои уникальные преимущества, которые невозможно заменить. Это очень удобный набор инструментов для разработки, который поможет сэкономить много времени.
Подводя итог, преимущества PHP заключаются в следующем:
Фреймворки PHP, представленные Laravel и Symfony, в настоящее время становятся все более зрелыми, постепенно сокращая дистанцию с фреймворком Java Spring. Проект расширения сопрограмм Swoole также запустил в этом году план v6.0, представив решение для параллельного программирования многопотоков + сопрограмм для PHP.
Для предприятий, выбирающих PHP, в крупномасштабных веб-системах с десятками или даже сотнями миллионов активных пользователей стек технологий PHP может столкнуться с различными проблемами и проблемами. Использование Java или Golang может легко обеспечить более высокую производительность, технические характеристики и высокий уровень. параллелизм, высокая доступность и более зрелые решения для управления услугами. Однако большинство проектов не будут иметь такого масштабного пользовательского уровня и сложности, и команды разработчиков, использующие стек технологий PHP, по-прежнему являются более экономичным выбором. Команда исследований и разработок может поддерживать более высокую скорость итерации при меньших инвестициях в человеческие ресурсы, что особенно важно в условиях текущей тенденции увеличения доходов и сокращения расходов.
PHP-разработчикам, во-первых, необходимо изучить искусственный интеллект, использовать такие инструменты, как ChatGPT и GitHub Copilot, чтобы повысить эффективность разработки, а также понять принципы работы больших моделей, таких как Transformers; во-вторых, мы можем использовать образы Docker и инструменты оркестрации контейнеров Docker Swarm; и Docker Compose реализуют собственное управление запуском контейнеров; в-третьих, мы также должны освоить стеки интерфейсных технологий, такие как Vue/React/ElementUI, и, наконец, иметь возможность разрабатывать полный стек, изучать C++/Golang/Java; Другие технологии языков программирования также необходимо не ограничиваться только PHP как языком программирования.
-End-
Первоначальный автор|Разработчик Tencent Cloud