Эпическое обновление PHP! Сможет ли версия 8.4 переломить ситуацию?
Эпическое обновление PHP! Сможет ли версия 8.4 переломить ситуацию?

В отличие от ранней версии Java, цикл выпуска которой составлял один год, последняя версия PHP 8.4 была официально выпущена 19 ноября, даже раньше, чем первоначально планировалось 21 ноября, а на день позже, 20 ноября, была выпущена версия 8.4.1. .

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

Следите за разработчиками Tencent Cloud и заранее получайте техническую информацию из первых рук👇

01. Список последних функций

1.1 Хуки свойств Хуки свойств

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

Пример:

Язык кода:javascript
копировать
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 попрощалась с избыточными круглыми скобками в цепочках методов. Теперь разработчики могут опускать круглые скобки при непосредственном вызове методов вновь созданных объектов, что упрощает написание цепочек методов.

Пример кода:

до:

Язык кода:javascript
копировать
$name = (new ReflectionClass($objectOrClass))->getShortName();

Сейчас:

Язык кода:javascript
копировать
$name = new ReflectionClass($objectOrClass)->getShortName();

1.3 Асимметричная видимость Асимметричная видимость

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

Пример кода:

Язык кода:javascript
копировать
class ReadOnlyProperty {
    public string $data get;
    private string $data set;
}

1.4 Новые функции array_*()

Новые функции array_find(), array_find_key(), array_any() и array_all().

Пример кода:

Язык кода:javascript
копировать
$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 по-прежнему доступен для обратной совместимости.

Пример кода:

Язык кода:javascript
копировать
$doc = \Dom\HTMLDocument :: createFromString($contents);

Другие обновления основных функций можно найти на официальном сайте: https://www.php.net/releases/8.4/zh.php.

02. 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 Помимо того, что это язык Помимо программирования, это еще и язык шаблонов. Можно встроить прямо в шаблон. 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

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода