HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>5 дек 2018</li>
2 <ul><li>5 дек 2018</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Ему ежегодно пророчили исчезновение из-за невостребованности. Но спустя годы он по-прежнему остаётся в топе языков для веб-разработки.</p>
4 </ul><p>Ему ежегодно пророчили исчезновение из-за невостребованности. Но спустя годы он по-прежнему остаётся в топе языков для веб-разработки.</p>
5 <p>Иллюстрация: Polina Vari для Skillbox Media</p>
5 <p>Иллюстрация: Polina Vari для Skillbox Media</p>
6 <p>Автор в сфере IT, digital, экономики и финансов. Ведёт некоммерческий проект для начинающих писателей "ЛитЦех".</p>
6 <p>Автор в сфере IT, digital, экономики и финансов. Ведёт некоммерческий проект для начинающих писателей "ЛитЦех".</p>
7 <p>PHP - интерпретируемый скриптовый язык программирования общего назначения. Название представляет собой рекурсивный акроним PHP: Hypertext Preprocessor (PHP: предварительный обработчик гипертекста), но изначально оно расшифровывалось как Personal Home Page Tools (Инструменты для создания персональных веб-страниц).</p>
7 <p>PHP - интерпретируемый скриптовый язык программирования общего назначения. Название представляет собой рекурсивный акроним PHP: Hypertext Preprocessor (PHP: предварительный обработчик гипертекста), но изначально оно расшифровывалось как Personal Home Page Tools (Инструменты для создания персональных веб-страниц).</p>
8 <p>За более чем 20 лет PHP прошёл путь от простого набора скриптов до полноценного языка веб-программирования и стабильно входит в топ-10 популярных языков по <a>версии TIOBE</a>.</p>
8 <p>За более чем 20 лет PHP прошёл путь от простого набора скриптов до полноценного языка веб-программирования и стабильно входит в топ-10 популярных языков по <a>версии TIOBE</a>.</p>
9 <p>PHP создали специально для разработки веб-страниц. На нём можно делать ресурсы любой сложности: от простого лендинга до социальной сети - именно на PHP написана "ВКонтакте". Код на PHP легко встраивается в классический HTML - нужно всего лишь добавить соответствующий тег. Язык поддерживают все популярные операционные системы: Windows, macOS, Linux, UNIX и не только.</p>
9 <p>PHP создали специально для разработки веб-страниц. На нём можно делать ресурсы любой сложности: от простого лендинга до социальной сети - именно на PHP написана "ВКонтакте". Код на PHP легко встраивается в классический HTML - нужно всего лишь добавить соответствующий тег. Язык поддерживают все популярные операционные системы: Windows, macOS, Linux, UNIX и не только.</p>
10 <p>А ещё PHP позволяет работать с такими веб-серверами, как IIS в Windows и Apache в macOS и Linux. Благодаря такой широкой совместимости у разработчиков практически нет ограничений в выборе веб-сервера и операционной системы.</p>
10 <p>А ещё PHP позволяет работать с такими веб-серверами, как IIS в Windows и Apache в macOS и Linux. Благодаря такой широкой совместимости у разработчиков практически нет ограничений в выборе веб-сервера и операционной системы.</p>
11 <p>Отцом самого популярного языка веб-программирования считается датский программист Расмус Лердорф. В 1994 году он создал набор скриптов на языке Perl - ту самую "персональную домашнюю страницу", которая легла в основу PHP.</p>
11 <p>Отцом самого популярного языка веб-программирования считается датский программист Расмус Лердорф. В 1994 году он создал набор скриптов на языке Perl - ту самую "персональную домашнюю страницу", которая легла в основу PHP.</p>
12 <p>Со временем к работе над языком подключились программисты со всего мира. PHP - один из старейших языков, который разрабатывается силами сообщества по модели<a>open source</a>. Сейчас его поддерживает и разрабатывает группа энтузиастов во главе с компанией<a>Zend Technologies</a>. Компанией руководят Зеев Сураски и Энди Гутманс, в 1997 году выпустившие третью версию PHP.</p>
12 <p>Со временем к работе над языком подключились программисты со всего мира. PHP - один из старейших языков, который разрабатывается силами сообщества по модели<a>open source</a>. Сейчас его поддерживает и разрабатывает группа энтузиастов во главе с компанией<a>Zend Technologies</a>. Компанией руководят Зеев Сураски и Энди Гутманс, в 1997 году выпустившие третью версию PHP.</p>
13 <p>Познакомимся с основными особенностями языка.</p>
13 <p>Познакомимся с основными особенностями языка.</p>
14 <p>В отличие от Java, код на котором компилируется, а затем запускается в работу, PHP-код создаётся во время обращения к PHP. Человек открывает сайт, на сервер посылается запрос, и в это время компилируется код. Каждый скрипт компилируется в реальном времени, а затем выполняется.</p>
14 <p>В отличие от Java, код на котором компилируется, а затем запускается в работу, PHP-код создаётся во время обращения к PHP. Человек открывает сайт, на сервер посылается запрос, и в это время компилируется код. Каждый скрипт компилируется в реальном времени, а затем выполняется.</p>
15 <p>Приведём пример кода:</p>
15 <p>Приведём пример кода:</p>
16 &lt;?php /** * Класс для сохранения файлов, кроме изображений */ class Application { protected $_image = null; // Файл, с которым нужно работать /** * Метод сохраняет файл на диск * * [id153965260|@param] string $path - новый путь к файлу * [id153965260|@param] string $imagePath - старый путь * [id16226053|@return] boolean */ public function saveFile($imagePath, $path){ $result = file_get_contents($imagePath, $path); $nameDir = explode('/',$path); $newNameDir= 'files/'.$nameDir[1].'/'.$nameDir[2].'/'.$nameDir[3]; mkdir($newNameDir, 0777, true); $resultWrite = file_put_contents($path, $result); return $resultWrite; } }<p>Благодаря этому свойству PHP - очень гибкий язык. Например, Java-программист вводит название класса один раз - теперь оно неизменно. PHP же компилируется в рантайме, и можно подставить любое название класса из переменной.</p>
16 &lt;?php /** * Класс для сохранения файлов, кроме изображений */ class Application { protected $_image = null; // Файл, с которым нужно работать /** * Метод сохраняет файл на диск * * [id153965260|@param] string $path - новый путь к файлу * [id153965260|@param] string $imagePath - старый путь * [id16226053|@return] boolean */ public function saveFile($imagePath, $path){ $result = file_get_contents($imagePath, $path); $nameDir = explode('/',$path); $newNameDir= 'files/'.$nameDir[1].'/'.$nameDir[2].'/'.$nameDir[3]; mkdir($newNameDir, 0777, true); $resultWrite = file_put_contents($path, $result); return $resultWrite; } }<p>Благодаря этому свойству PHP - очень гибкий язык. Например, Java-программист вводит название класса один раз - теперь оно неизменно. PHP же компилируется в рантайме, и можно подставить любое название класса из переменной.</p>
17 <p><strong>Что такое рантайм?</strong></p>
17 <p><strong>Что такое рантайм?</strong></p>
18 <p>Время жизни программ, написанных на языках вроде C, C++ и Java, можно представить в виде двух последовательных этапов: compile time (компиляция) и runtime (выполнение). Сначала все инструкции на языке переводятся в единицы и нули - это двоичный код, с которым умеет работать компьютер. Затем компьютер выполняет каждую команду - это и есть рантайм. В C, C++ и Rust этапы компиляции и выполнения явно разделены, поэтому их называют компилируемыми языками.</p>
18 <p>Время жизни программ, написанных на языках вроде C, C++ и Java, можно представить в виде двух последовательных этапов: compile time (компиляция) и runtime (выполнение). Сначала все инструкции на языке переводятся в единицы и нули - это двоичный код, с которым умеет работать компьютер. Затем компьютер выполняет каждую команду - это и есть рантайм. В C, C++ и Rust этапы компиляции и выполнения явно разделены, поэтому их называют компилируемыми языками.</p>
19 <p>А вот в PHP и JavaScript эти процессы совмещены: как только инструкцию перевели в машинный код, она сразу же выполняется - отдельного этапа компиляции всего кода нет. Такие языки называют интерпретируемыми.</p>
19 <p>А вот в PHP и JavaScript эти процессы совмещены: как только инструкцию перевели в машинный код, она сразу же выполняется - отдельного этапа компиляции всего кода нет. Такие языки называют интерпретируемыми.</p>
20 <p>Однако ради гибкости разработчики жертвуют скоростью работы сайта. В случае с Java программу собирают один раз, а затем запускают. В случае с PHP приходится тратить время пользователя на процесс компиляции кода.</p>
20 <p>Однако ради гибкости разработчики жертвуют скоростью работы сайта. В случае с Java программу собирают один раз, а затем запускают. В случае с PHP приходится тратить время пользователя на процесс компиляции кода.</p>
21 <p>В языках программирования тип - это<strong>набор значений</strong>, которые может иметь переменная, и <strong>операций</strong>, которые с этими значениями можно осуществлять.</p>
21 <p>В языках программирования тип - это<strong>набор значений</strong>, которые может иметь переменная, и <strong>операций</strong>, которые с этими значениями можно осуществлять.</p>
22 <p>В разных языках программирования типы ведут себя по-разному. Поэтому выделяют несколько видов типизации:</p>
22 <p>В разных языках программирования типы ведут себя по-разному. Поэтому выделяют несколько видов типизации:</p>
23 <ul><li>по времени определения типа - статическая и динамическая типизация;</li>
23 <ul><li>по времени определения типа - статическая и динамическая типизация;</li>
24 <li>по постоянству множества значений - слабая и сильная типизация.</li>
24 <li>по постоянству множества значений - слабая и сильная типизация.</li>
25 </ul><p>В языках со <strong>статической типизацией</strong>тип переменной определяется на этапе компиляции и не может изменяться в течение работы программы. Программист явно указывает тип переменных с помощью служебных слов: если это число, пишет int, если строка - string.</p>
25 </ul><p>В языках со <strong>статической типизацией</strong>тип переменной определяется на этапе компиляции и не может изменяться в течение работы программы. Программист явно указывает тип переменных с помощью служебных слов: если это число, пишет int, если строка - string.</p>
26 <p>В языках с <strong>динамической типизацией</strong>переменная за время работы программы может быть числом, строкой, массивом, объектом - чем угодно. Интерпретатор не будет "ругаться" и сам определит тип обрабатываемых данных по контексту (например, по виду операции).</p>
26 <p>В языках с <strong>динамической типизацией</strong>переменная за время работы программы может быть числом, строкой, массивом, объектом - чем угодно. Интерпретатор не будет "ругаться" и сам определит тип обрабатываемых данных по контексту (например, по виду операции).</p>
27 <p>С одной стороны, динамическая типизация позволяет разработчику не заботиться о соблюдении типов, а с другой - приводит к труднораспознаваемым логическим ошибкам. Кроме того, из-за динамической типизации программы работают медленнее и потребляют больше оперативной памяти.</p>
27 <p>С одной стороны, динамическая типизация позволяет разработчику не заботиться о соблюдении типов, а с другой - приводит к труднораспознаваемым логическим ошибкам. Кроме того, из-за динамической типизации программы работают медленнее и потребляют больше оперативной памяти.</p>
28 <p>Версии с первой по третью были сырыми и обладали минимальным набором возможностей, хотя для создания простых сайтов их хватало. Разработчики сетовали на то, что нелогичность расположения параметров в функциях стандартной библиотеки усложняет работу.</p>
28 <p>Версии с первой по третью были сырыми и обладали минимальным набором возможностей, хотя для создания простых сайтов их хватало. Разработчики сетовали на то, что нелогичность расположения параметров в функциях стандартной библиотеки усложняет работу.</p>
29 <p>Но с версии 5.4 PHP превратился в отлаженную технологию, а релизы 5.5 и 5.6 закрепили успех языка. Все версии отлично себя показали и оказались хорошо защищены от SQL-инъекций и взлома. Шестую версию пропустили: она должна была поддерживать Unicode на уровне ядра, но релиз не состоялся.</p>
29 <p>Но с версии 5.4 PHP превратился в отлаженную технологию, а релизы 5.5 и 5.6 закрепили успех языка. Все версии отлично себя показали и оказались хорошо защищены от SQL-инъекций и взлома. Шестую версию пропустили: она должна была поддерживать Unicode на уровне ядра, но релиз не состоялся.</p>
30 <p>"PHP 6 был амбициозным, но отстойным. Вот почему мы занялись PHP 7, в процессе пропустив шестую версию".</p>
30 <p>"PHP 6 был амбициозным, но отстойным. Вот почему мы занялись PHP 7, в процессе пропустив шестую версию".</p>
31 <p><a><strong>Вильсон Дюка</strong></a>, веб-разработчик.</p>
31 <p><a><strong>Вильсон Дюка</strong></a>, веб-разработчик.</p>
32 Анимационное видео Петера Кокота о развитии ключевых модулей PHP в течение 21 года жизни языка<p>Седьмая версия считается революционной в плане скорости. Версия 5.6 медленно работала с массивами и вообще с переменными: обработка статически нетипизированных данных занимала много времени. Строка обрабатывалась в 60 раз медленнее, чем на C#. Это не бросается в глаза - речь о долях секунды. Но когда у тебя миллиард пользователей, как у "Фейсбука"*, скорость критична.</p>
32 Анимационное видео Петера Кокота о развитии ключевых модулей PHP в течение 21 года жизни языка<p>Седьмая версия считается революционной в плане скорости. Версия 5.6 медленно работала с массивами и вообще с переменными: обработка статически нетипизированных данных занимала много времени. Строка обрабатывалась в 60 раз медленнее, чем на C#. Это не бросается в глаза - речь о долях секунды. Но когда у тебя миллиард пользователей, как у "Фейсбука"*, скорость критична.</p>
33 <p>"Фейсбук"* написан на PHP - и с ростом количества пользователей это стало настоящей проблемой. Чтобы её решить, программисты создали для пятой версии собственный интерпретатор языка. Они изначально компилировали его в промежуточный код, а затем отправляли в обычный интерпретатор Zend Engine. Программисты "Фейсбука"* ввели статическую типизацию и ускорили работу языка в два раза. Это стало настоящим прорывом. Транслятор назвали HHVM, или HPHP Compiler - "HipHop для языка PHP".</p>
33 <p>"Фейсбук"* написан на PHP - и с ростом количества пользователей это стало настоящей проблемой. Чтобы её решить, программисты создали для пятой версии собственный интерпретатор языка. Они изначально компилировали его в промежуточный код, а затем отправляли в обычный интерпретатор Zend Engine. Программисты "Фейсбука"* ввели статическую типизацию и ускорили работу языка в два раза. Это стало настоящим прорывом. Транслятор назвали HHVM, или HPHP Compiler - "HipHop для языка PHP".</p>
34 <p>Но команда разработки PHP плотно занялась массивами. Итогом стала седьмая версия, которая работала быстрее HHVM. При этом статической типизации в седьмой версии по-прежнему почти нет. Её можно найти только в параметрах функции - но этого так мало, что можно считать, будто её нет совсем.</p>
34 <p>Но команда разработки PHP плотно занялась массивами. Итогом стала седьмая версия, которая работала быстрее HHVM. При этом статической типизации в седьмой версии по-прежнему почти нет. Её можно найти только в параметрах функции - но этого так мало, что можно считать, будто её нет совсем.</p>
35 <p>Каждая новая версия языка, начиная с 7.0, работает быстрее предыдущей - разница видна по замерам:</p>
35 <p>Каждая новая версия языка, начиная с 7.0, работает быстрее предыдущей - разница видна по замерам:</p>
36 Результаты бенчмарков версий PHP на WordPress<p>PHP постоянно развивается, поэтому мы обновили статью 2 ноября 2022 года.</p>
36 Результаты бенчмарков версий PHP на WordPress<p>PHP постоянно развивается, поэтому мы обновили статью 2 ноября 2022 года.</p>
37 <p>В 2020 году вышла версия PHP 8, и веб-разработчики встретили её тепло. В PHP 8 внедрили JIT-компиляцию: по <a>данным сообщества</a>, она ускоряет работу веб-приложений в три раза. Появились именованные параметры и лаконичный оператор выбора match, пришедший на замену switch. А ещё заметно повысилась безопасность: например, добавили оператор nullsafe, который прекращает работу цепочки методов, если один из них вернул null.</p>
37 <p>В 2020 году вышла версия PHP 8, и веб-разработчики встретили её тепло. В PHP 8 внедрили JIT-компиляцию: по <a>данным сообщества</a>, она ускоряет работу веб-приложений в три раза. Появились именованные параметры и лаконичный оператор выбора match, пришедший на замену switch. А ещё заметно повысилась безопасность: например, добавили оператор nullsafe, который прекращает работу цепочки методов, если один из них вернул null.</p>
38 <p>Затем, в 2021 году, вышло обновление 8.1. Одной из главных фич релиза стал долгожданный тип enum - раньше в качестве замены перечислениям разработчики создавали классы с набором констант. Добавили readonly-свойства, которые работают как get-методы, но выглядят лаконичнее. С полным списком нововведений можно ознакомиться на <a>официальном сайте PHP</a>.</p>
38 <p>Затем, в 2021 году, вышло обновление 8.1. Одной из главных фич релиза стал долгожданный тип enum - раньше в качестве замены перечислениям разработчики создавали классы с набором констант. Добавили readonly-свойства, которые работают как get-методы, но выглядят лаконичнее. С полным списком нововведений можно ознакомиться на <a>официальном сайте PHP</a>.</p>
39 <p>Релиз PHP 8.2 запланирован на 24 ноября 2022 года. В обновление планируют добавить readonly-классы, улучшенный генератор псевдослучайных чисел и множество других небольших фич, которые позволят писать более безопасный и лаконичный код. Тестовая версия уже<a>доступна для скачивания</a>.</p>
39 <p>Релиз PHP 8.2 запланирован на 24 ноября 2022 года. В обновление планируют добавить readonly-классы, улучшенный генератор псевдослучайных чисел и множество других небольших фич, которые позволят писать более безопасный и лаконичный код. Тестовая версия уже<a>доступна для скачивания</a>.</p>
40 <p>Единственная сфера применения - веб-разработка. На PHP невозможно сделать десктопные приложения, он не используется в мобильной разработке - только веб. Но сегодня эта область огромна. Даже некоторые десктопные приложения уходят в веб - тот же Microsoft Office имеет облачный сервис. Ранее считалось, что PHP не подходит для больших высоконагруженных проектов, но опыт "Фейсбука"* доказывает обратное. "Авито" - ещё один пример удачной реализации.</p>
40 <p>Единственная сфера применения - веб-разработка. На PHP невозможно сделать десктопные приложения, он не используется в мобильной разработке - только веб. Но сегодня эта область огромна. Даже некоторые десктопные приложения уходят в веб - тот же Microsoft Office имеет облачный сервис. Ранее считалось, что PHP не подходит для больших высоконагруженных проектов, но опыт "Фейсбука"* доказывает обратное. "Авито" - ещё один пример удачной реализации.</p>
41 <p>PHP легко изучить самостоятельно - у него низкий порог входа. Буквально за вечер можно прочитать документацию и написать скрипт, который будет возвращать данные на сайт. Другие языки (C#, Java) имеют более высокий порог вхождения, и одного дня, чтобы создать работающий код, мало. Сегодня на российском рынке труда из-за низкого порога входа много PHP-кодеров, и большинство - невысокого уровня.</p>
41 <p>PHP легко изучить самостоятельно - у него низкий порог входа. Буквально за вечер можно прочитать документацию и написать скрипт, который будет возвращать данные на сайт. Другие языки (C#, Java) имеют более высокий порог вхождения, и одного дня, чтобы создать работающий код, мало. Сегодня на российском рынке труда из-за низкого порога входа много PHP-кодеров, и большинство - невысокого уровня.</p>
42 PHP стабильно находится в топе популярных языков разработки, несмотря на бесконечные заявления о его скорой смерти<em>Скриншот:<a>TIOBE</a></em><p>Хороший разработчик PHP фактически применяет те же паттерны программирования, что и в статически типизированных языках. На PHP даже сложнее программировать, и вот почему. Если в Java или C# допустить алгоритмическую ошибку - например, присвоить переменной не тот тип, - они "дадут по рукам". PHP же это пропустит, и программист сломает голову: что не так? Ведь всё работает, но неправильно. Из-за этого на современном рынке хорошим PHP-программистам готовы платить не меньше, чем другим разработчикам. Но хорошего специалиста сложно найти.</p>
42 PHP стабильно находится в топе популярных языков разработки, несмотря на бесконечные заявления о его скорой смерти<em>Скриншот:<a>TIOBE</a></em><p>Хороший разработчик PHP фактически применяет те же паттерны программирования, что и в статически типизированных языках. На PHP даже сложнее программировать, и вот почему. Если в Java или C# допустить алгоритмическую ошибку - например, присвоить переменной не тот тип, - они "дадут по рукам". PHP же это пропустит, и программист сломает голову: что не так? Ведь всё работает, но неправильно. Из-за этого на современном рынке хорошим PHP-программистам готовы платить не меньше, чем другим разработчикам. Но хорошего специалиста сложно найти.</p>
43 <p>Чтобы учить язык, нужно задать себе вопрос: "Для чего он мне?" Учить ради процесса учёбы бесполезно, без практического применения знания забудутся. Нужно поставить конкретную задачу и искать решение.</p>
43 <p>Чтобы учить язык, нужно задать себе вопрос: "Для чего он мне?" Учить ради процесса учёбы бесполезно, без практического применения знания забудутся. Нужно поставить конкретную задачу и искать решение.</p>
44 <p>* Решением суда запрещена "деятельность компании Meta Platforms Inc. по реализации продуктов - социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности".</p>
44 <p>* Решением суда запрещена "деятельность компании Meta Platforms Inc. по реализации продуктов - социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности".</p>
45 <a>Научитесь: Профессия PHP-разработчик с нуля до PRO Узнать больше</a>
45 <a>Научитесь: Профессия PHP-разработчик с нуля до PRO Узнать больше</a>