За допомогою серверної мови програмування PHP можна створювати майже будь-якої складності Web-сайти, що використовуються на тисячах серверів по всьому світу. Починаючи з самого початку зародження Web, PHP невпинно розвивається та притягує до себе величезну кількість програмістів, що надає їй дуже велику популярність та залишає у верхівці рейтингу найбільш вживаних мов програмування у світі.

На відміну від перших версій РНР, у яких об’єктно-орієнтований підхід довго залишався альтернативою для традиційного процедурного підходу, нові версії РНР практично повністю призначені для об’єктно-орієнтованої розробки. Сьогодні ООП є невід’ємною складовою сучасних РНР-додатків, оскільки все більше розширень використовують об’єктно-орієнтований інтерфейс, оформлення компонентів у вигляді класів, РSR-стандарти і сучасні фреймворки диктують розробку, повністю орієнтовану на об’єктно-орієнтований підхід.

Традиційно, при знайомстві з будь-якою мовою програмування необхідно ознайомитися з її перевагами та недоліками.

Переваги PHP


Web розробка. В більшій мірі мова програмування PHP створювалася та підтримується як мова, орієнтована для розробки вебсайтів. Конструкції мови розроблені для зручності роботи у Web середовищі.

Багатоплатформність. РНР працює практично на всіх популярних операційних системах, тому не виникне проблем при розробці та перенесенні проєктів.

Безкоштовність. Мова програмування РНР є повністю безкоштовна. Крім того, не потрібно платити за більшість додаткових редакторів, серверів та баз даних, з якими вона працює. Значна кількість програмних продуктів будуть мати доступний для вивчення і модифікації вихідний код.

Легкість вивчення. Вивчити РНР і почати створювати готові програми не складе великих зусиль, в порівнянні з її конкурентами, такими як .NET, Python, Ruby тощо.

Недоліки PHP


Відсутність лідера. Комерційні технології мають, так би мовити, свого лідера, архітектора, який визначає вигляд та напрямок розвитку технології. У РНР лідера немає, багато рішень і конструкцій - це компроміс зацікавлених груп та історично сформованих реалій.

Відгук з минулого. Мова програмування PHP доволі не молода, і пройшла дуже нелегкий шлях розвитку, яким можна характеризувати створенням та видаленням ключових слів, директив, конструкцій, котрі мають доволі неоднозначний характер. Наприклад, деякі конструкції ніби є, але ними не рекомендується користуватися. Те ж саме стосується директив, які на перший погляд повинні були полегшувати розробку, а на практиці оберталися серйозними проблемами безпеки.

Роз’єднана спільнота. РНР - це одна з перших технологій для розробки вебпроєктів, за допомогою якої створена більша половина Інтернету. У розробку РНР одночасно було залучено величезну кількість програмістів по всьому світу, що в свою чергу породило величезну кількість різних підходів, фреймворків і несумісних екосистем. З часом з’являються альтернативні реалізації РНР, що призвело до несумісності екосистем всередині РНР, а співтовариству необхідно витрачати значні сили на створення одних і тих же бібліотек в рамках різних груп. В деякій мірі ситуація виправляється за допомогою РSR-стандартів, які описують єдині правила та інтерфейси, що забезпечують сумісність фреймворків, але цей процес ще на початку шляху, в той час як технології конкурентів (.NET, Ruby) вже мають єдину платформу для всіх фреймворків.

Cтруктура РНР


Мова програмування РНР складається з ядра та розширень. Між ядром і розширеннями доволі складно провести межу, оскільки багато розширень включені до складу ядра або поширюються у вигляді легко встановлюваних скомпільованих бінарних бібліотек.

Створений програмістом PHP код можна умовно розділити на наступні типи:

Компоненти - являють собою бібліотеки на РНР, які збираються за допомогою менеджера пакетів Composer;

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

Готові програми - готові до використання розробки на РНР. Це системи управління контентом CMS, вебінтерфейси управління базами даних (phpMyAdmin).

Супутні технології


PHP дозволяє швидко розробляти вебсайти, однак для запуску буде потрібне додаткове програмне забезпечення і технології:

Вебсервер. Програма, яка забезпечує взаємодію клієнта і вашої програми за допомогою протоколу НТТР. В більшій мірі для експлуатації вебсайту буде потрібно вебсервер Nginx або Apache. Встановлення вебсерверу не створить труднощів, оскільки в мережі Інтернет ви з легкістю зможете знайти його встановлення на всі відомі платформи. Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB.

Сервер бази даних. Для збереження даних використовуються сервери баз даних, яких, на даний момент, існує дуже велика кількість. Кожна окрема база даних заслуговує на окрему книгу.

Система контролю версій Git, яка служить для зберігання історії розробки, резервного копіювання, завантаження коду на сервер, організації командної роботи. Працюєте ви самостійно або в колективі - Git зараз перетворився в основний інструмент сучасного програміста, яку б мову програмування ви не використовували.

Даний список можна продовжувати ще дуже довго, однак з впевненістю можна стверджувати, що вивчаючи мову програмування PHP ви будете задоволені своїм вибором.

Скрипти


Хоча мову програмування PHP можна назвати універсальною мовою, але все ж таки, основна її спеціалізація - Web розробка. Програми, написані на PHP називаються скриптами (сценаріями). Головною відмінністю традиційних програм від скриптів полягає в тому, що скрипти працюють тільки в певному середовищі і використовують ресурси даного середовища. Наприклад, скриптова мова програмування JavaScript працює переважно у веббраузерах, для PHP в якості середовища виступає Web оточення (вебсервер, база даних тощо). Вебсервер приймає запити від клієнта, забезпечує їх паралельне виконання і відправку даних. РНР-скрипт отримує всю інформацію про запит і виконує його з подальшим відправленням даних назад серверу. З використанням цих мов програмування неможливо створити програму, що працює без відповідного середовища.
Втім, мова програмування РНР допускає створення програм, що працюють незалежно від вебсервера, проте в такій формі вона не отримала широкого поширення.

Однією з найбільш вживаних особливостей мови програмування РНР є той факт, що її код може розташовуватися упереміш з HTML-кодом. Для того щоб інтерпретатор РНР розрізняв HTML та РНР-коди, останній потрібно помістити між спеціальними тегами <?php та ?>, де розташовуються конструкції та оператори мови програмування РНР.

Традиційно, наведемо класичний приклад виводу у вікно браузера фрази "Hello, world!". Для цього необхідно використати конструкцію Echo:
<!DOCTYPE html>
<html>
<head>
<title>PHP-скрипт</title>
<meta charset='utf-8'>
</head>
<body>
<?php
echo "Hello world!";
?>
</body>
</html>

Спочатку мова програмування РНР розроблялася як шаблонизатор - система, вбудована в НТМL-код для виконання операцій, які не підтримуються статичним HTML. Але з часом, РНР трансформувалася в повноцінну мову із зворотною тенденцією - відділення РНР і НТМL-коду.

Конструкція echo виводить один або кілька рядків в стандартний вивід. В результаті роботи скрипта у вікно браузера буде виведена фраза "Hello, world!". Слід зауважити, що при роботі з серверною мовою програмування РНР, скрипти, розташовані між тегами <?php та ?>, виконуються на стороні сервера, тому клієнту відображається лише результат роботи РНР-коду, в чому можна легко переконатися, переглянувши вихідний код HTML-сторінки:
<!DOCTYPE html>
<html>
<head>
<title>PHP-скрипт</title>
<meta charset='utf-8'>
</head>
<body>
Hello world!
</body>
</html>
Навіть у випадках, коли немає необхідності інтерпретатору розділяти НТМL - і РНР-коди, вказувати РНР-теги є обов’язково, в іншому випадку РНР-код буде виведений у вікно браузера як є, без інтерпретації. Також, крім основних тегів, РНР підтримує спеціальний тип тегів <?= ... ?> для виведення результату одиночного РНР-виразу. Наприклад, попередній скрипт можна переписати так:
<!DOCTYPE html>
<html>
<head>
<title><?= "PHP-скрипт"; ?></title>
<meta charset='utf-8'>
</head>
<body>
<?= "Hello world!"; ?>
</body>
</html>
В даному випадку не потрібно використовувати конструкцію echo, тег <?= автоматично виводить результат в стандартний потік. Також слід зауважити, НТМL-сторінка може містити більш ніж одну РНР вставку, що наведено у попередньому прикладі, де вивід відбувається безпосередньо в заголовку сторінки тега title та тілі сторінки тега body.

Використання крапки з комою


У мові програмування PHP під поняттям вираз розуміється сукупність конструкцій, що завершується крапкою з комою (;). Якщо вираз один, то потреба відокремлювати його від інших виразів відсутня. Якщо не відокремлювати вирази, інтерпретатор мови програмування РНР вважатиме вираз на новому рядку продовженням попереднього і не зможе коректно розібрати скрипт. В результаті буде згенеровано повідомлення про помилку розбору:
Parse error: syntax error, unexpected ... (T_STRING), expecting ',' or ';' in ... on line ...
Після останнього виразу перед завершальним тегом ?> можна не додавати крапку з комою. Однак рекомендується писати крапки з комою після кожного виразу, оскільки додавання нових операторів може привести до появи важкодоступних помилок.

Переводи рядків ніяк не впливають на інтерпретацію скрипта, вираз може бути розбитий на кілька рядків - інтерпретатор РНР буде вважати, що вираз закінчено лише після того, як виявить крапку з комою або завершальний тег ?>. Але слід пам’ятати, чим зрозуміліше і очікуваніше написаний код, тим простіше і швидше його налагоджувати.

Складені вирази. Фігурні дужки


Фігурні дужки дозволяють об’єднати кілька виразів в групу, яку називають складеним виразом:
<?php
{
echo "Hello world!";
echo 1 + 2;
}
Сам по собі складений вираз практично ніколи не використовується, основне його призначення - спільна робота з умовними операторами, операторами циклу тощо. Складений вираз може бути розташований в кількох РНР-вставках.

Коментарі


У порівнянні з машинними кодами, асемблером або першими мовами програмування високого рівня, код сучасних мов програмування є досить зручним для сприйняття людиною. Однак, конструкції мови продиктовані архітектурою комп’ютера, і, створюючи програми, розробник використовує комп’ютерну, а не людську логіку, що часто призводить до створення досить складних побудов, які потребують пояснення на звичайній мові. Саме такі пояснення додаються за допомогою коментарів.

У РНР можна використовувати декілька способів для вставки коментарів:

// ... - Коментар в стилі мови С++, що починається з символу двох слешів // і закінчується переводом рядка.

# ... - Коментар в стилі скриптових мов UNIX, що починається з символу дієз # і закінчується переводом рядка.

/* ... */ - Багаторядковий коментар у стилі C++.

Якщо два перших коментарі обмежені лише одним рядком, останній спосіб є багаторядковим. Продемонструємо приклад використання всіх трьох видів коментарів:
<?php
/*
Багаторядковий
коментар
*/
echo 'Hello'; // коментар
echo 'World'; # коментар
Коментарі РНР діють тільки всередині тегів-обмежувачів <?php та ?>, інакше вони, як і будь-який текст, будуть відображені користувачеві.

Включення РНР-файлу


Зазвичай, скрипти досить рідко обмежуються одним файлом. Для підключення інших файлів у сценарій потрібно використовувати одну з двох конструкцій: include і require. Обидві приймають єдиний аргумент - шлях до файлу. В результаті підключення відбувається підстановка вмісту файлу у місце їх виклику в вихідному скрипті. Якщо в якості підключеного файлу виступає РНР-скрипт, то спочатку відбувається його підстановка у вихідний сценарій, а потім інтерпретація:
<?php
echo 'Основний скрипт';
include 'included.php';
Різниця include і require полягає в їх реакції на відсутність файлу для підключення. У разі include виводиться попередження, весь наступний код залишиться активним; в разі require, якщо не можна знайти файл, робота скрипта зупиняється.

Якщо після вищеописаної інформації у вас з’явилася зацікавленість мовою програмування PHP - сміло продовжуйте її вивчати.