Перейти до вмісту

PHP: відмінності між версіями

Матеріал з K2 ERP Wiki
Первинна публікація
 
Первинна публікація
 
Рядок 1: Рядок 1:
</head>  
];
 
├── src/
 
== Namespace ==
<?php echo "Привіт з PHP!"; ?>
!Значення
'''Laravel''' — найпопулярніший сучасний PHP-фреймворк.; Це мова величезної частини вебу, яка продовжує розвиватися і залишається практичною для бізнесу.'''</blockquote>
→ PHP-застосунок
== PHP і якість коду ==
'''Packagist''' — це головне сховище PHP-пакетів для Composer.; Приклад маршруту Laravel:<syntaxhighlight lang="php">
 
→ База даних
!Пояснення
<?php


→ Web-сервер
echo "Hello, world!";
├── composer.lock
</syntaxhighlight>Змінні:<syntaxhighlight lang="php">
</pre>У сучасних PHP-проєктах зазвичай вхідною точкою є собою файл:<pre>
== PHP 5, PHP 7 і PHP 8 ==
PHP створювався як проста мова для генерації HTML-сторінок на сервері.; |-
return view('welcome');
|'''Велика програмний пакет'''
|є собою Composer, Packagist, Laravel, Symfony, WordPress та інші інструменти.; Вона застосовується для створення:
|-
|-
|'''JavaScript'''
|'''[[PHPStan]]'''
|JavaScript центральний для frontend; PHP сильний у server-side web
|Статичний аналіз коду
|-
|-
|'''TypeScript'''
|'''[[Psalm]]'''
|TypeScript сильний у великих web-інтерфейсах; PHP сильний у CMS і backend-сайтах
|Статичний аналіз і перевірка типів
|-
|-
|'''Python'''
|'''[[PHP-CS-Fixer]]'''
|Python сильніший в AI й automation; PHP сильніший у класичному web і CMS
|Автоматичне форматування коду
|-
|-
|'''Java'''
|'''[[PHP_CodeSniffer]]'''
|Java частіше для enterprise backend; PHP простіший для web-сайтів і швидкого старту
|Перевірка стандартів коду
|-
|-
|'''C#'''
|'''[[Rector]]'''
|C# сильний у .NET і enterprise; PHP часто простіший для web-хостингу й CMS
|Автоматичний refactoring і актуалізація коду
|-
|-
|'''Go'''
|'''[[Composer Audit]]'''
|Go продуктивніший для мікросервісів; PHP має сильну web-екосистему
|Перевірка вразливостей у залежностях
|}
|}


== PHP і шаблони ==
<?php
header("Content-Type: application/json");
echo json_encode([
"status" => "ok",
</syntaxhighlight>
== PHP і безпека ==
== PHP і безпека ==
services:
!Порівняння з PHP
public/index.php
== Основні особливості PHP ==
Вона сильна там, де потрібні:
Його популярність пояснюється тим, що:
PHP часто функціонує з web-серверами:
!Тип
!Пояснення
nginx:
Типова схема:<syntaxhighlight lang="text">
Багато компонентів Symfony використовуються в інших PHP-проєктах, включно з Laravel.;</body>
== Apache і Nginx ==
 
== Висновок ==
 
PHP залишається однією з найважливіших мов веброзробки.; !Web-сервер
Браузер користувача
== Важливі акценти ==
Приклад простої JSON-відповіді:<syntaxhighlight lang="php">
== Мінімальний набір для першого PHP-проєкту ==
Приклад простої PHP-сторінки:<syntaxhighlight lang="html">
echo $user->sayHello();
PHP має змогу бути корисним у ERP і корпоративних системах для:
echo $user ["name"];
}
 
Symfony часто використовують у:
== переважні аспекти PHP ==
Приклад PDO:<syntaxhighlight lang="php">
Одна з головних причин популярності PHP — '''WordPress'''.; PHP історично дуже тісно повʼязаний з HTML.;== PHP і тестування ==
 
* фреймворк;
* модульну архітектуру;
* ORM;
* міграції;
* тести;
* черги;
* логування;
* контроль доступів;
* документацію API;
* code review.; {| class="wikitable"
 
* каталог товарів;
* кошик;
* оформлення замовлення;
* оплати;
* доставка;
* промокоди;
* залишки на складі;
* особистий кабінет;
* інтеграційні функціональні можливості з CRM або ERP.; Окремо варто відзначити яка найчастіше застосовується; додатково реалізовано вебзастосунків, CMS, інтернет-магазинів, API, CRM, ERP-модулів і інших backend-систем виступає ключовою рисою створення сайтів забезпечується через '''PHP'''.; !Задача
!Рекомендація
!Інструмент
|-
|-
|1
|'''[[WordPress]]'''
|HTML і базовий CSS
|Найпопулярніша CMS для сайтів, блогів і магазинів
|-
|-
|2
|'''[[Drupal]]'''
|Основи PHP: змінні, умови, цикли, функції
|Потужна CMS для складних контентних і корпоративних систем
|-
|-
|3
|'''[[Joomla]]'''
|Масиви, форми, GET і POST
|CMS для сайтів і порталів
|-
|-
|4
|'''[[Magento]]'''
|Робота з файлами
|E-commerce платформа
|-
|-
|5
|'''[[OpenCart]]'''
|PDO і база даних MySQL або PostgreSQL
|платформа для інтернет-магазинів
|}
 
!Параметр
public/index.php
 
!Пояснення
 
* WooCommerce;
* Magento;
* OpenCart;
* PrestaShop;
* Laravel-магазини;
* custom e-commerce.;<h1>Привіт, {{ $user->name }}</h1>
 
!База даних
│ ├── Service/
Сучасний PHP підтримує роботу багато можливостей, яких не було в старому PHP.;</h1>
 
* маршрутизацію;
* ORM Eloquent;
* міграції бази даних;
* Blade-шаблони;
* черги;
* події;
* авторизацію;
* middleware;
* тести;
* CLI Artisan;
* екосистему пакетів.; !Можливість
 
* встановлювати бібліотеки;
* керувати версіями пакетів;
* підключати автозавантаження класів;
* описувати залежності проєкту;
* працювати з Packagist.; |-
|'''Frontend'''
|JavaScript, TypeScript
|-
|-
|6
|'''AI / Data Science'''
|ООП: класи, обʼєкти, інтерфейси, namespace
|Python, R, Julia
|-
|-
|7
|'''Enterprise backend'''
|Composer і автозавантаження
|Java, C#
|-
|-
|8
|'''High-performance backend'''
|Laravel або Symfony
|Go, Rust
|-
|-
|9
|'''Realtime-системи'''
|REST API, JSON, авторизація
|Node.js, Go, Elixir
|-
|-
|10
|'''Mobile Android'''
|Тестування через PHPUnit або Pest
|Kotlin
|-
|-
|11
|'''Mobile iOS'''
|Docker, PHP-FPM, Nginx
|Swift
|-
|-
|12
|'''Системне програмування'''
|Безпека, кешування, черги, CI/CD
|C, C++, Rust
|}
|}


== PHP і тестування ==
!реліз
echo $user->sayHello();
Популярні інструменти:
</pre>Приклад <code>composer.json</code>:<pre>
== Обʼєктно-орієнтоване програмування в PHP ==
Route::get('/users', function () {
це популярна серверна мова програмування.; → Nginx
{| class="wikitable"
 
<?php
 
$pdo = new PDO(
"mysql:host=localhost;dbname=test;charset=utf8mb4",
"user",
"password"
);
 
$stmt = $pdo->query("SELECT * FROM users");
 
* enterprise-проєктах;
* складних backend-системах;
* довгострокових продуктах;
* проєктах, де потрібна сувора технічна архітектура;
* системах із великою кількістю інтеграцій.; |}
 
</syntaxhighlight>
== Symfony ==
 
→ Web-сервер
 
== Головна ідея PHP ==
 
Основні типи даних у PHP:
Його часто використовують разом із Nginx або Apache для обробки PHP-запитів.; Приклад хешування пароля:<syntaxhighlight lang="php">
 
"guzzlehttp/guzzle": "^7.0"
{| class="wikitable"
== PHP у бізнесі ==
!CMS
}
|-
|-
|'''реліз PHP'''
|'''[[MySQL]]'''
|PHP 8.2 або новіша підтримувана реліз
|Класичний вибір для PHP-сайтів, CMS і магазинів
|-
|-
|'''Редактор'''
|'''[[MariaDB]]'''
|VS Code або PhpStorm
|Популярна альтернатива MySQL
|-
|-
|'''Менеджер залежностей'''
|'''[[PostgreSQL]]'''
|Composer
|Потужна реляційна база для складніших систем
|-
|-
|'''База даних'''
|'''[[SQLite]]'''
|MySQL, MariaDB або PostgreSQL
|Легка файлова база для малих застосунків і тестів
|-
|-
|'''Web-сервер'''
|'''[[Redis]]'''
|Nginx або Apache
|Кеш, сесії, черги, тимчасові інформаційні дані
|-
|-
|'''Фреймворк'''
|'''[[MongoDB]]'''
|Laravel для більшості сучасних web-проєктів
|Документоорієнтована база для окремих сценаріїв
|-
|'''Тестування'''
|PHPUnit або Pest
|-
|'''Контроль версій'''
|Git
|-
|'''Форматування'''
|PHP-CS-Fixer або Laravel Pint
|}
|}
return User::all();
</syntaxhighlight>Сервер виконує PHP-код і відправляє браузеру готовий HTML.; ├── vendor/
}
!Фреймворк
<!DOCTYPE html>
<?php
$name = "Anna";
$age = 17;


build: .; {| class="wikitable"
echo "Привіт, $name! Тобі $age років.";
</syntaxhighlight>Функція:<syntaxhighlight lang="php">
Приклади:
== PHP у ERP та корпоративних системах ==


<title>PHP Page</title>
<?php
<?php


Рядок 113: Рядок 255:
  echo "Пароль правильний";
  echo "Пароль правильний";
}
}
</pre>
</syntaxhighlight>
"age" => 17,


{| class="wikitable"
Route::get('/users', function () {
== Symfony ==
}
};
== Висновок ==
echo $user ["name"];
== PHP і CMS ==
{| class="wikitable"
Route::get('/', function () {
Через Packagist можна встановлювати:
return User::all();
}
{| class="wikitable"


== PHP і продуктивність ==
* HTTP-клієнти;
</pre>Приклад сервісів:<pre>
* ORM;
PHP залишається однією з найважливіших мов веброзробки.;== PHP і API ==
* фреймворки;
Сучасний PHP підтримує роботу багато можливостей, яких не було в старому PHP.; Це мова величезної частини вебу, яка продовжує розвиватися і залишається практичною для бізнесу.'''</blockquote>
* бібліотеки для PDF;
== Популярність PHP ==
* бібліотеки для Excel;
PHP має змогу бути корисним у ERP і корпоративних системах для:
* SDK для API;
</pre>
* пакети для тестування;
 
* пакети для логування;
== Популярні PHP-фреймворки ==
* інтеграції з платіжними системами.; користувач системи не бачить PHP-код.; |-
},
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
PHP часто функціонує з web-серверами:
|'''PHP простий для старту'''
!Статус
|Першу сторінку можна створити дуже оперативно.;<syntaxhighlight lang="php">
|-
|-
|'''Простий старт'''
|'''Простий старт'''
Рядок 165: Рядок 294:
|}
|}


}
== PHP у e-commerce ==
Його часто використовують разом із Nginx або Apache для обробки PHP-запитів.; |}
!Мова
== Коли PHP — хороший вибір ==
!Компонент
|-
|'''Багато legacy-коду'''
|У світі є собою багато старих PHP-проєктів із поганою архітектурою
|-
|'''Історична непослідовність'''
|Частина старих функцій і підходів має неідеальний дизайн
|-
|'''без зайвих зусиль написати хаотичний код'''
|Без фреймворку й архітектури проєкт оперативно стає складним
|-
|'''Не найкращий для realtime'''
|Для деяких realtime-сценаріїв частіше використовують Node.js, Go або Elixir
|-
|'''Не ключовий вибір для AI'''
|Для AI та Data Science частіше використовують Python
|-
|'''Потрібно стежити за версіями'''
|Старі PHP-версії оперативно стають ризиком безпеки
|}


<?php
!Пояснення
 
  "php": "^8.2",
use PHPUnit\Framework\TestCase;
 
class MathTest extends TestCase
{
  public function testAdd(): void
{
$this->assertEquals(5, 2 + 3);
</pre>
 
Багато компонентів Symfony використовуються в інших PHP-проєктах, включно з Laravel.;<pre>
Браузер
{
!Теза
 
<blockquote>'''PHP добре підходить для web-орієнтованих бізнес-систем, особливо якщо потрібна швидка розробка програмного забезпечення й багато готових компонентів.'''</blockquote>
'''Composer''' — це центральний менеджер залежностей у PHP.;== PHP у ERP та корпоративних системах ==
Laravel дає:
{| class="wikitable"
З часом PHP перетворився на повноцінну серверну мову програмування, яка стала дуже популярною завдяки наявності простоті розгортання, дешевому хостингу та прямій інтеграції з HTML.; |-
|'''Динамічна типізація'''
|PHP має змогу автономно визначати типи значень.; |-
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
|'''Сучасний PHP сильно відрізняється від старого PHP'''
|PHP 8.x має типізацію, атрибути, enum, сучасний ООП-підхід, покращену продуктивність.;<blockquote>'''Якщо потрібно зробити сайт, CMS, інтернет-магазин, кабінет клієнта, адмінпанель або backend на Laravel — PHP досі є собою дуже практичним вибором.'''</blockquote>
== Namespace ==
!Для чого
 
{| class="wikitable"
'''PHP''' — одна з найважливіших мов веброзробки.; {| class="wikitable"
PHP має стару репутацію, але сучасний PHP 8.x — це вже значно сильніша, швидша й більш структурована мова, ніж PHP минулих років.; це популярна серверна мова програмування, яка найчастіше застосовується; додатково реалізовано вебзастосунків, CMS, інтернет-магазинів, API, CRM, ERP-модулів та інших backend-систем виступає ключовою рисою створення сайтів забезпечується через '''PHP'''.; Приклад простого <code>Dockerfile</code>:<pre>
!Навіщо потрібна
!Навіщо потрібна
PHP часто обирають для бізнесу, коли потрібно:
composer require guzzlehttp/guzzle
PHP-проєкти мають типові web-ризики:
"cancelled" => "Скасовано",
|-
|'''PHP 5'''
|Стара епоха PHP, багато legacy-проєктів
|-
|-
|Корпоративний сайт
|'''PHP 7'''
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|Великий стрибок продуктивності й покращення мови
|-
|-
|WordPress-сайт
|'''PHP 8'''
| style="background:#d4edda; color:#155724; font-weight:bold;" |Найкращий вибір
|Сучасна гілка з JIT, attributes, union types, enum, readonly, fibers, property hooks та іншими можливостями
|}
 
<html>
!Правило
!Напрям
Приклад простого <code>Dockerfile</code>:<syntaxhighlight lang="dockerfile">
│ ├── Controller/
|-
|-
|Інтернет-магазин
|'''Typed properties'''
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|Типізація властивостей класу
|-
|-
|Laravel backend
|'''Union types'''
| style="background:#d4edda; color:#155724; font-weight:bold;" |Дуже добре
|Один із кількох можливих типів
|-
|-
|CRM / ERP web-модулі
|'''Attributes'''
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|Метадані для класів, методів і властивостей
|-
|-
|REST API
|'''Enums'''
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|Обмежений набір значень
|-
|-
|SaaS
|'''Readonly properties'''
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|Захист від зміни після ініціалізації
|-
|-
|Realtime chat
|'''Constructor property promotion'''
| style="background:#fff3cd; color:#856404; font-weight:bold;" |Можливо, але не ключовий вибір
|Коротший запис властивостей у конструкторі
|-
|-
|AI / Machine Learning
|'''Match expression'''
| style="background:#fff3cd; color:#856404; font-weight:bold;" |Не ключовий вибір
|Зручніша альтернатива switch
|-
|-
|Системне програмування
|'''Fibers'''
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Не підходить
|Низькорівнева основа для cooperative multitasking
|}
|}
PHP дуже важливий у CMS-екосистемі.; |-
|'''Велика програмний пакет'''
|є собою Composer, Packagist, Laravel, Symfony, WordPress та інші інструменти.; На продуктивність впливають:
</syntaxhighlight>
'''PHP-FPM''' — це FastCGI Process Manager для PHP.;<blockquote>'''PHP — це мова, яка багато років тримає значну частину вебу: від простих сайтів до великих CMS, магазинів і бізнес-систем.'''</blockquote>
'''Symfony''' — потужний PHP-фреймворк і набір компонентів для великих застосунків.; {| class="wikitable"
!Етап


PHP добре функціонує з базами даних.;== Laravel ==
!Приклади
</pre>
├── composer.json
{| class="wikitable"
{| class="wikitable"
 
!Пояснення
PHP — це мова для серверної частини вебу.; |-
build: .; !Значення
| style="background:#fff3cd; color:#856404; font-weight:bold;" |істотно
COPY .;== Для чого застосовується PHP ==
|'''PHP часто має погану репутацію через старий код'''
Для великих ERP-проєктів істотно використовувати:
|Багато критики PHP повʼязано зі старими підходами, а не з сучасною мовою.;<blockquote>'''PHP — це мова, яка створює сторінку або відповідь на сервері, а браузер отримує вже результат.'''</blockquote>
</syntaxhighlight>Приклад сервісів:<syntaxhighlight lang="yaml">
}
Типові задачі:
== Основні особливості PHP ==
│ ├── Repository/
 
Приклади:
php:
 
Популярні інструменти:
 
* HTTP-клієнти;
* ORM;
* фреймворки;
* бібліотеки для PDF;
* бібліотеки для Excel;
* SDK для API;
* пакети для тестування;
* пакети для логування;
* інтеграції з платіжними системами.; "role" => "student"
|-
|-
|'''[[PHPStan]]'''
|'''[[PHPUnit]]'''
|Статичний аналіз коду
|Unit та integration тести
|-
|-
|'''[[Psalm]]'''
|'''[[Pest]]'''
|Статичний аналіз і перевірка типів
|Сучасний тестовий фреймворк із простим синтаксисом
|-
|-
|'''[[PHP-CS-Fixer]]'''
|'''[[Behat]]'''
|Автоматичне форматування коду
|BDD-тестування
|-
|-
|'''[[PHP_CodeSniffer]]'''
|'''[[Codeception]]'''
|Перевірка стандартів коду
|Functional, acceptance і API-тести
|-
|'''[[Rector]]'''
|Автоматичний refactoring і актуалізація коду
|-
|'''[[Composer Audit]]'''
|Перевірка вразливостей у залежностях
|}
|}
PHP має стару репутацію, але сучасний PHP 8.x — це вже значно сильніша, швидша й більш структурована мова, ніж PHP минулих років.;<blockquote>'''PHP — це не мова минулого.; |-
|'''Простий старт'''
|без зайвих зусиль створити першу сторінку або скрипт.; {| class="wikitable"


== PHP 5, PHP 7 і PHP 8 ==
{| class="wikitable sortable"
== Простими словами ==
!Пояснення
project/
FROM php:8.4-fpm
PHP часто запускають у Docker.; /app
<?php
<?php


$status = "paid";
use PHPUnit\Framework\TestCase;
 
class MathTest extends TestCase
{
public function testAdd(): void
{
$this->assertEquals(5, 2 + 3);
 
"require": {
</syntaxhighlight>Приклад <code>composer.json</code>:<syntaxhighlight lang="json">


$message = match ($status) {
→ PHP-скрипт
"draft" => "Чернетка",
Популярні шаблонізатори:
│ ├── Controller/
PHP створювався як проста мова для генерації HTML-сторінок на сервері.; {| class="wikitable"
== Історичний розвиток ==
</syntaxhighlight>Приклад API route:<syntaxhighlight lang="php">
== Головна ідея PHP ==
== Коротко ==
"psr-4": {
│ ├── Repository/
PHP має інструменти для автоматичного тестування.; '''Composer''' — це центральний менеджер залежностей у PHP.;<blockquote>'''Якщо потрібно зробити сайт, CMS, інтернет-магазин, кабінет клієнта, адмінпанель або backend на Laravel — PHP досі є собою дуже практичним вибором.'''</blockquote>
Браузер
<body>
|-
|-
|'''[[Laravel]]'''
|'''[[Laravel]]'''
Рядок 326: Рядок 446:
|}
|}


PHP добре функціонує з базами даних.; default => "Невідомо",
<?php
class User
{
public function __construct(
public string $name,
public string $email
) {
}
public function sayHello(): string
{
return "Привіт, я {$this->name}";
→ PHP-FPM
volumes:
Через Packagist можна встановлювати:
print_r($users);
echo $message;
</syntaxhighlight>
Класична схема роботи PHP виглядає так:<syntaxhighlight lang="text">
!Приклад
|-
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
|'''PHP дуже поширений у вебі'''
|На PHP працюють WordPress, Drupal, Joomla, Laravel-проєкти та велика кількість сайтів.; !Статус
'''WordPress''' — це CMS, написана на PHP.;<blockquote>'''Якщо у світі існує багато сайтів на WordPress, то PHP автономно залишається важливою мовою вебу.'''</blockquote>
== Composer ==
│ └── index.php
</syntaxhighlight>У Laravel API зазвичай створюють через controllers, routes і resources.; |-
|'''інтеграційні функціональні можливості з HTML'''
|PHP можна вставляти безпосередньо в HTML.; |-
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
|'''Сучасний PHP сильно відрізняється від старого PHP'''
|PHP 8.x має типізацію, атрибути, enum, сучасний ООП-підхід, покращену продуктивність.;== PHP у порівнянні з іншими мовами ==
!Що вивчати
== Джерела ==
!Теза
== Структура PHP-проєкту ==
* SQL Injection;
* XSS;
* CSRF;
* небезпечне завантаження файлів;
* слабка авторизація;
* витік сесій;
* неправильна робота з паролями;
* небезпечні залежності;
* неправильні права на файли.; },
PHP-проєкти мають типові web-ризики:
</syntaxhighlight>У сучасних PHP-проєктах зазвичай вхідною точкою є собою файл:<syntaxhighlight lang="text">
Приклад простої структури сучасного PHP-проєкту:<syntaxhighlight lang="text">
== PHP і бази даних ==
== PHP і HTML ==
!Як застосовується PHP
<?php
$languages = ["PHP", "JavaScript", "Python", "Java"];
foreach ($languages as $language) {
echo $language . PHP_EOL;
}
</syntaxhighlight>Асоціативний масив:<syntaxhighlight lang="php">
!Особливість
{| class="wikitable"
{| class="wikitable"
- "8080:80"
}
<head>
|-
|'''Серверна мова'''
|PHP-код виконується на сервері, а користувач системи отримує результат.; |-
|'''Динамічна типізація'''
|PHP має змогу автономно визначати типи значень.;<?php


{| class="wikitable"
namespace App\Service;


* маршрутизацію;
class UserService
* ORM Eloquent;
{
* міграції бази даних;
public function createUser(): void
* Blade-шаблони;
{
* черги;
// логіка створення користувача
* події;
}
* авторизацію;
}
* middleware;
</syntaxhighlight>
* тести;
PHP сильно змінився за останні роки.; Він отримує вже готовий HTML, JSON або іншу відповідь.;</syntaxhighlight>
* CLI Artisan;
<h1>
* екосистему пакетів.; return view('welcome');
!Для чого
Приклад простої PHP-сторінки:<pre>
|-
</pre>У Laravel API зазвичай створюють через controllers, routes і resources.;<head>
|'''[[Apache]]'''
|Класичний варіант, часто з mod_php або PHP-FPM
|-
|'''[[Nginx]]'''
|Часто застосовується з PHP-FPM
|-
|'''[[Caddy]]'''
|Сучасний web-сервер із автоматичним HTTPS
|}


* фреймворк;
!Чи підходить PHP?; |-
* модульну архітектуру;
|'''супровід типів'''
* ORM;
|Сучасний PHP надає можливість явно вказувати типи параметрів, властивостей і результатів.; |-
* міграції;
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
* тести;
|'''Laravel зробив PHP дуже сильним для сучасного backend'''
* черги;
|Laravel дав зручну архітектуру, ORM, міграції, черги, тести й екосистему.; |-
* логування;
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Увага
* контроль доступів;
|'''Поганий PHP-код дуже без зайвих зусиль написати'''
* документацію API;
|Без архітектури, фреймворку, типів і тестів PHP-проєкт оперативно перетворюється на хаос.;== Недоліки PHP ==
* code review.;== PHP і шаблони ==
!Для чого
На продуктивність впливають:
</syntaxhighlight>
!Напрям
|-
|'''Сайти'''
|Генерація HTML-сторінок на сервері
|Корпоративні сайти, блоги, landing pages
|-
|'''CMS'''
|Керування контентом
|WordPress, Drupal, Joomla
|-
|-
|'''[[MySQL]]'''
|'''Інтернет-магазини'''
|Класичний вибір для PHP-сайтів, CMS і магазинів
|Каталоги, кошики, замовлення, оплати
|WooCommerce, Magento, OpenCart
|-
|-
|'''[[MariaDB]]'''
|'''Backend API'''
|Популярна альтернатива MySQL
|REST API, JSON-відповіді, бізнес-логіка
|Laravel API, Symfony API
|-
|-
|'''[[PostgreSQL]]'''
|'''CRM'''
|Потужна реляційна база для складніших систем
|Клієнти, угоди, задачі, комунікації
|Власні CRM-системи
|-
|-
|'''[[SQLite]]'''
|'''ERP'''
|Легка файлова база для малих застосунків і тестів
|обліковий облік, документи, складський облік, фінансовий блок, процеси
|Внутрішні бізнес-системи
|-
|-
|'''[[Redis]]'''
|'''SaaS'''
|Кеш, сесії, черги, тимчасові інформаційні дані
|Онлайн-сервіси для бізнесу
|Кабінети клієнтів, адмінпанелі, billing
|-
|-
|'''[[MongoDB]]'''
|'''автоматизація процесів'''
|Документоорієнтована база для окремих сценаріїв
|Скрипти, інтеграції, cron-задачі
|Обмін із API, імпорт/експорт даних
|}
|}
Класична схема роботи PHP виглядає так:<pre>
!реліз


!Фреймворк
PHP створив '''Расмус Лердорф''' у 1995 році як набір інструментів для власної домашньої сторінки.;== Рекомендований шлях навчання PHP ==
!Якщо потрібно
{| class="wikitable"
== PHP і WordPress ==
{| class="wikitable"
<?php
 
$user = [
"name" => "Anna",
{| class="wikitable"
<?php


!Параметр
$status = "paid";
== PHP-FPM ==


== Типи даних ==
$message = match ($status) {
  "guzzlehttp/guzzle": "^7.0"
  "draft" => "Чернетка",
PHP часто застосовується для створення REST API.; Встановлення пакета:<syntaxhighlight lang="bash">


</pre>Приклад API route:<pre>
{| class="wikitable"
завдяки наявності '''Namespace''' користувачі можуть організовувати класи й уникати конфліктів назв.; ]);
!Для чого застосовується
}
}


!Web-сервер
├── public/
!Альтернативи
Назва PHP історично розшифровувалась як '''Personal Home Page''', але зараз офіційно застосовується рекурсивне значення '''PHP: Hypertext Preprocessor'''.; |-
 
|'''JavaScript'''
</pre>
|JavaScript центральний для frontend; PHP сильний у server-side web
├── src/
|-
];
|'''TypeScript'''
!Що вивчати
|TypeScript сильний у великих web-інтерфейсах; PHP сильний у CMS і backend-сайтах
|-
|'''Python'''
|Python сильніший в AI й automation; PHP сильніший у класичному web і CMS
|-
|'''Java'''
|Java частіше для enterprise backend; PHP простіший для web-сайтів і швидкого старту
|-
|-
|'''Серверна мова'''
|'''C#'''
|PHP-код виконується на сервері, а користувач системи отримує результат.; !Можливість
|C# сильний у .NET і enterprise; PHP часто простіший для web-хостингу й CMS
|-
|-
|'''Frontend'''
|'''Go'''
|JavaScript, TypeScript
|Go продуктивніший для мікросервісів; PHP має сильну web-екосистему
|}
 
services:
]);
!Як застосовується з PHP
Приклад enum:<syntaxhighlight lang="php">
|-
|-
|'''AI / Data Science'''
|1
|Python, R, Julia
|HTML і базовий CSS
|-
|-
|'''Enterprise backend'''
|2
|Java, C#
|Основи PHP: змінні, умови, цикли, функції
|-
|-
|'''High-performance backend'''
|3
|Go, Rust
|Масиви, форми, GET і POST
|-
|-
|'''Realtime-системи'''
|4
|Node.js, Go, Elixir
|Робота з файлами
|-
|-
|'''Mobile Android'''
|5
|Kotlin
|PDO і база даних MySQL або PostgreSQL
|-
|-
|'''Mobile iOS'''
|6
|Swift
|ООП: класи, обʼєкти, інтерфейси, namespace
|-
|-
|'''Системне програмування'''
|7
|C, C++, Rust
|Composer і автозавантаження
|}
 
== Коротко ==
!База даних
== PHP і WordPress ==
'''WordPress''' — це CMS, написана на PHP.;<blockquote>'''PHP — це не мова минулого.; composer require guzzlehttp/guzzle
== PHP у бізнес-системах ==
PHP має змогу генерувати HTML напряму, але у фреймворках часто використовують шаблонізатори.; Він надає можливість:
|-
|-
|'''[[WordPress]]'''
|8
|Найпопулярніша CMS для сайтів, блогів і магазинів
|Laravel або Symfony
|-
|-
|'''[[Drupal]]'''
|9
|Потужна CMS для складних контентних і корпоративних систем
|REST API, JSON, авторизація
|-
|-
|'''[[Joomla]]'''
|10
|CMS для сайтів і порталів
|Тестування через PHPUnit або Pest
|-
|-
|'''[[Magento]]'''
|11
|E-commerce платформа
|Docker, PHP-FPM, Nginx
|-
|-
|'''[[OpenCart]]'''
|12
|платформа для інтернет-магазинів
|Безпека, кешування, черги, CI/CD
|}
|}


!Пояснення
}
{| class="wikitable"
<?php


!Правило
enum OrderStatus: string
 
{
* WooCommerce;
case Draft = "draft";
* Magento;
case Paid = "paid";
* OpenCart;
case Cancelled = "cancelled";
* PrestaShop;
}
* Laravel-магазини;
</syntaxhighlight>Приклад match:<syntaxhighlight lang="php">
* custom e-commerce.; |-
PHP часто обирають для бізнесу, коли потрібно:
|'''інтеграційні функціональні можливості з HTML'''
- "8080:80"
|PHP можна вставляти безпосередньо в HTML.; Сучасний PHP активно використовує обʼєктно-орієнтований підхід.;<?php
|-
 
|'''реліз PHP'''
header("Content-Type: application/json");
|PHP 8.2 або новіша підтримувана реліз
 
echo json_encode([
"status" => "ok",
'''PHP-FPM''' — це FastCGI Process Manager для PHP.; |}
 
{| class="wikitable sortable"
!Рекомендація
!Інструмент
{| class="wikitable"
├── vendor/
== Рекомендований шлях навчання PHP ==
|-
|-
|'''int'''
|'''Редактор'''
|<code>10</code>
|VS Code або PhpStorm
|Ціле число
|-
|-
|'''float'''
|'''Менеджер залежностей'''
|<code>3.14</code>
|Composer
|Дробове число
|-
|-
|'''string'''
|'''База даних'''
|<code>"Hello"</code>
|MySQL, MariaDB або PostgreSQL
|Рядок тексту
|-
|-
|'''bool'''
|'''Web-сервер'''
|<code>true</code>, <code>false</code>
|Nginx або Apache
|Логічне значення
|-
|-
|'''array'''
|'''Фреймворк'''
|<code>[1, 2, 3]</code>
|Laravel для більшості сучасних web-проєктів
|Масив
|-
|-
|'''object'''
|'''Тестування'''
|<code>new User()</code>
|PHPUnit або Pest
|Обʼєкт
|-
|-
|'''null'''
|'''Контроль версій'''
|<code>null</code>
|Git
|Відсутність значення
|-
|-
|'''resource'''
|'''Форматування'''
|Файл, зʼєднання
|PHP-CS-Fixer або Laravel Pint
|Спеціальний ресурс
|}
|}


│ └── Entity/
== PHP і Docker ==
<body>
</syntaxhighlight>
 
</syntaxhighlight>
→ HTML-відповідь
 
PHP має змогу використовуватися для:
 
* сайти;
* CMS;
* WordPress;
* інтернет-магазини;
* Laravel-застосунки;
* backend API;
* адмінпанелі;
* web-орієнтовані бізнес-системи;
* інтеграції;
* швидкий запуск web-проєкту.;</html>
!характеристика
Сучасний PHP активно використовує обʼєктно-орієнтований підхід.; ports:


"message" => "Hello from PHP API"
'''PHP''' — одна з найважливіших мов веброзробки.; !Інструмент
PHP часто застосовується для створення REST API.; |-
  "paid" => "Оплачено",
|'''Простий старт'''
{| class="wikitable sortable"
|без зайвих зусиль створити першу сторінку або скрипт.;</pre>
print_r($users);
  "App\\": "src/"
|-
|-
|'''Використовувати prepared statements'''
|'''Використовувати prepared statements'''
Рядок 539: Рядок 761:
|Ключі мають бути в environment variables
|Ключі мають бути в environment variables
|}
|}
== Коли PHP — хороший вибір ==
== PHP і API ==
</body>
<?php
 
function add(int $a, int $b): int
{
return $a + $b;
}
 
echo add(5, 7);
</syntaxhighlight>Масив:<syntaxhighlight lang="php">
 
== Популярність PHP ==
Laravel дає:
 
<blockquote>'''PHP добре підходить для web-орієнтованих бізнес-систем, особливо якщо потрібна швидка розробка програмного забезпечення й багато готових компонентів.'''</blockquote>
 
* реліз PHP;
* OPcache;
* якість SQL-запитів;
* кешування;
* індекси в базі даних;
* технічна архітектура застосунку;
* черги;
* асинхронна обробка;
* web-сервер;
* конфігурація PHP-FPM;
* кількість залежностей.;== PHP і CMS ==
"role" => "student"
== Packagist ==
Приклад Blade:<syntaxhighlight lang="html">
PHP став особливо важливим для розвитку динамічного вебу, CMS і блогів.; "autoload": {
{| class="wikitable"
│ └── Entity/
{| class="wikitable"
== Альтернативи PHP ==
!Перевага
 
Вона сильна там, де потрібні:
== PHP-FPM ==
 
!Для чого застосовується
{| class="wikitable"
{
{| class="wikitable"
|-
|Корпоративний сайт
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|WordPress-сайт
| style="background:#d4edda; color:#155724; font-weight:bold;" |Найкращий вибір
|-
|Інтернет-магазин
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|Laravel backend
| style="background:#d4edda; color:#155724; font-weight:bold;" |Дуже добре
|-
|CRM / ERP web-модулі
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|REST API
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|SaaS
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|Realtime chat
| style="background:#fff3cd; color:#856404; font-weight:bold;" |Можливо, але не ключовий вибір
|-
|AI / Machine Learning
| style="background:#fff3cd; color:#856404; font-weight:bold;" |Не ключовий вибір
|-
|Системне програмування
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Не підходить
|}


└── README.md
</syntaxhighlight>
PHP створив '''Расмус Лердорф''' у 1995 році як набір інструментів для власної домашньої сторінки.;== Альтернативи PHP ==
Route::get('/', function () {


* оперативно запустити сайт;
* оперативно запустити сайт;
Рядок 555: Рядок 850:
* автоматизувати документи;
* автоматизувати документи;
* обробляти заявки;
* обробляти заявки;
* створити billing або SaaS.; !Недолік
* створити billing або SaaS.;<blockquote>'''PHP — це мова, яка створює сторінку або відповідь на сервері, а браузер отримує вже результат.'''</blockquote>
→ PHP-застосунок
├── composer.json
 
volumes:
 
* блогів;
* корпоративних сайтів;
* медіа-сайтів;
* інтернет-магазинів;
* landing pages;
* сайтів послуг;
* особистих сайтів;
* контентних платформ.; → HTML-відповідь
 
Найпростіша програма:<pre>
{| class="wikitable sortable"
 
{| class="wikitable"
{| class="wikitable"
== Типи даних ==
→ HTTP-запит
}
== PHP у бізнес-системах ==


* Blade у Laravel;
└── README.md
* Twig у Symfony;
* Smarty у старих або legacy-проєктах.; $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
!Мова
 
* CRM;
* ERP-модулів;
* адмінпанелей;
* кабінетів клієнта;
* внутрішніх порталів;
* документообігу;
* інтеграцій з банками;
* інтеграцій з платіжними системами;
* інтеграцій з РРО;
* звітів;
* автоматизації бізнес-процесів.;</html>
 
</pre>
!Як застосовується з PHP
!Як застосовується з PHP
З часом PHP перетворився на повноцінну серверну мову програмування, яка стала дуже популярною завдяки наявності простоті розгортання, дешевому хостингу та прямій інтеграції з HTML.; /app


* SQL Injection;
</syntaxhighlight>
* XSS;
== Популярні PHP-фреймворки ==
* CSRF;
  image: nginx:latest
* небезпечне завантаження файлів;
завдяки наявності '''Namespace''' користувачі можуть організовувати класи й уникати конфліктів назв.; |-
* слабка авторизація;
* витік сесій;
* неправильна робота з паролями;
* небезпечні залежності;
* неправильні права на файли.;== переважні аспекти PHP ==
 
!Напрям
→ База даних
 
</pre>
 
* сайти;
* CMS;
* WordPress;
* інтернет-магазини;
* Laravel-застосунки;
* backend API;
* адмінпанелі;
* web-орієнтовані бізнес-системи;
* інтеграції;
* швидкий запуск web-проєкту.; {| class="wikitable"
Приклад Blade:<pre>
!Пояснення
<?php
 
echo "Hello, world!";
</pre>Змінні:<pre>
!Значення
}
"php": "^8.2",
== Composer ==
 
ports:
Браузер користувача
 
→ PHP-скрипт
PHP має змогу використовуватися для:
 
default => "Невідомо",
 
</pre>
!Приклад
Приклад PDO:<pre>
  "autoload": {
Приклад простої структури сучасного PHP-проєкту:<pre>
<html>
PHP має інструменти для автоматичного тестування.; |-
|'''Назва'''
|'''Назва'''
|PHP
|PHP
Рядок 679: Рядок 900:
|}
|}


{| class="wikitable"
Сучасний PHP значно продуктивніший, ніж старі версії.; "message" => "Hello from PHP API"
Приклад PHPUnit-тесту:<pre>
== Історичний розвиток ==
 
== Джерела ==
→ PHP-FPM
== Для чого застосовується PHP ==
<?php
 
class User
{
public function __construct(
public string $name,
public string $email
) {
}
 
public function sayHello(): string
{
return "Привіт, я {$this->name}";
{| class="wikitable"
<blockquote>'''Якщо у світі існує багато сайтів на WordPress, то PHP автономно залишається важливою мовою вебу.'''</blockquote>
</h1>
!Для чого
 
PHP історично дуже тісно повʼязаний з HTML.; → HTTP-запит
== Мінімальний набір для першого PHP-проєкту ==


* web-інтерфейсів;
* web-інтерфейсів;
Рядок 714: Рядок 911:
* адмінпанелей;
* адмінпанелей;
* модулів для клієнтського доступу;
* модулів для клієнтського доступу;
* обміну з сайтами й маркетплейсами.;<?php
* обміну з сайтами й маркетплейсами.; !Альтернативи


function add(int $a, int $b): int
Приклад класу:<syntaxhighlight lang="php">
{
return $a + $b;
}


echo add(5, 7);
* PHP давно існує;
</pre>Масив:<pre>
* його без зайвих зусиль розгорнути на хостингу;
Приклад класу:<pre>
* на PHP функціонує WordPress;
PHP дуже важливий у CMS-екосистемі.; │ ├── Service/
* є собою багато готових CMS і фреймворків;
* PHP добре підходить для сайтів, магазинів, кабінетів і бізнес-систем;
* навколо PHP існує велика кількість розробників, документації й готових рішень.; Вона застосовується для створення:
PHP — це мова для серверної частини вебу.; |-
|'''Обʼєктно-орієнтоване програмування'''
|PHP підтримує роботу класи, інтерфейси, трейти, enum, namespace.; $user = new User("Anna", "anna@example.com");
FROM php:8.4-fpm


Одна з головних причин популярності PHP — '''WordPress'''.; Він отримує вже готовий HTML, JSON або іншу відповідь.; → Браузер показує сторінку
});


!Інструмент
* блогів;
!Значення
* корпоративних сайтів;
== Обʼєктно-орієнтоване програмування в PHP ==
* медіа-сайтів;
{| class="wikitable"
* інтернет-магазинів;
WORKDIR /app
* landing pages;
|-
* сайтів послуг;
|'''[[Apache]]'''
* особистих сайтів;
|Класичний варіант, часто з mod_php або PHP-FPM
* контентних платформ.;</syntaxhighlight>
|-
== Сучасні функціональні можливості PHP ==
|'''[[Nginx]]'''
|Часто застосовується з PHP-FPM
|-
|'''[[Caddy]]'''
|Сучасний web-сервер із автоматичним HTTPS
|}
 
== PHP у порівнянні з іншими мовами ==
!Етап
== PHP у бізнесі ==
Для великих ERP-проєктів істотно використовувати:
<h1>
|-
|'''[[PHPUnit]]'''
|Unit та integration тести
|-
|'''[[Pest]]'''
|Сучасний тестовий фреймворк із простим синтаксисом
|-
|'''[[Behat]]'''
|BDD-тестування
|-
|'''[[Codeception]]'''
|Functional, acceptance і API-тести
|}
"cancelled" => "Скасовано",
├── public/
!Порівняння з PHP
Його популярність пояснюється тим, що:
!Тип


<title>PHP Page</title>
!Пояснення
!Пояснення
== Важливі акценти ==
  php:
PHP став особливо важливим для розвитку динамічного вебу, CMS і блогів.; PHP сильно змінився за останні роки.; │ └── index.php
  <?php echo "Привіт з PHP!"; ?>
!Задача
nginx:
== Packagist ==
</pre>Тобто PHP функціонує переважно '''на сервері'''.; |-
|'''супровід типів'''
|Сучасний PHP надає можливість явно вказувати типи параметрів, властивостей і результатів.; ├── tests/
PHP часто застосовується для інтернет-магазинів.; |-
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Увага
|'''Поганий PHP-код дуже без зайвих зусиль написати'''
|Без архітектури, фреймворку, типів і тестів PHP-проєкт оперативно перетворюється на хаос.; Типові задачі:
<?php


$user = [
Приклад PHPUnit-тесту:<syntaxhighlight lang="php">
"name" => "Anna",
== Приклад коду ==
!Чи підходить PHP?; |-
|'''Обʼєктно-орієнтоване програмування'''
|PHP підтримує роботу класи, інтерфейси, трейти, enum, namespace.;<blockquote>'''PHP — це мова, яка багато років тримає значну частину вебу: від простих сайтів до великих CMS, магазинів і бізнес-систем.'''</blockquote>


<?php
{| class="wikitable"


$pdo = new PDO(
</syntaxhighlight>Тобто PHP функціонує переважно '''на сервері'''.; };
"mysql:host=localhost;dbname=test;charset=utf8mb4",
"user",
"password"
);


$stmt = $pdo->query("SELECT * FROM users");
Найпростіша програма:<syntaxhighlight lang="php">
"paid" => "Оплачено",
project/
</pre>
!CMS
== Структура PHP-проєкту ==
'''Packagist''' — це головне сховище PHP-пакетів для Composer.; Symfony часто використовують у:
→ Nginx
Сучасний PHP значно продуктивніший, ніж старі версії.; Приклад маршруту Laravel:<pre>
!Якщо потрібно
!Особливість
|-
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
|'''PHP дуже поширений у вебі'''
|На PHP працюють WordPress, Drupal, Joomla, Laravel-проєкти та велика кількість сайтів.; echo $message;


== PHP у e-commerce ==
"age" => 17,
- .:/app
</pre>
Основні типи даних у PHP:
!Як застосовується PHP
|-
|'''Сайти'''
|Генерація HTML-сторінок на сервері
|Корпоративні сайти, блоги, landing pages
|-
|'''CMS'''
|Керування контентом
|WordPress, Drupal, Joomla
|-
|'''Інтернет-магазини'''
|Каталоги, кошики, замовлення, оплати
|WooCommerce, Magento, OpenCart
|-
|'''Backend API'''
|REST API, JSON-відповіді, бізнес-логіка
|Laravel API, Symfony API
|-
|'''CRM'''
|Клієнти, угоди, задачі, комунікації
|Власні CRM-системи
|-
|'''ERP'''
|обліковий облік, документи, складський облік, фінансовий блок, процеси
|Внутрішні бізнес-системи
|-
|'''SaaS'''
|Онлайн-сервіси для бізнесу
|Кабінети клієнтів, адмінпанелі, billing
|-
|'''автоматизація процесів'''
|Скрипти, інтеграції, cron-задачі
|Обмін із API, імпорт/експорт даних
|}


$user = new User("Anna", "anna@example.com");
* Blade у Laravel;
== PHP і бази даних ==
* Twig у Symfony;
* Smarty у старих або legacy-проєктах.; });
== Laravel ==


== PHP і Docker ==
* CRM;
 
* ERP-модулів;
* PHP давно існує;
* адмінпанелей;
* його без зайвих зусиль розгорнути на хостингу;
* кабінетів клієнта;
* на PHP функціонує WordPress;
* внутрішніх порталів;
* є собою багато готових CMS і фреймворків;
* документообігу;
* PHP добре підходить для сайтів, магазинів, кабінетів і бізнес-систем;
* інтеграцій з банками;
* навколо PHP існує велика кількість розробників, документації й готових рішень.; |-
* інтеграцій з платіжними системами;
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
* інтеграцій з РРО;
|'''Laravel зробив PHP дуже сильним для сучасного backend'''
* звітів;
|Laravel дав зручну архітектуру, ORM, міграції, черги, тести й екосистему.; !Пояснення
* автоматизації бізнес-процесів.; PHP часто застосовується для інтернет-магазинів.; |}
 
* встановлювати бібліотеки;
* керувати версіями пакетів;
* підключати автозавантаження класів;
* описувати залежності проєкту;
* працювати з Packagist.; }
"psr-4": {
 
Назва PHP історично розшифровувалась як '''Personal Home Page''', але зараз офіційно застосовують, коли потрібно рекурсивне значення '''PHP: Hypertext Preprocessor'''.; COPY .; !Перевага
 
</pre>
'''Symfony''' — потужний PHP-фреймворк і набір компонентів для великих застосунків.; |-
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
|'''PHP простий для старту'''
|Першу сторінку можна створити дуже оперативно.; '''Laravel''' — найпопулярніший сучасний PHP-фреймворк.; Приклад хешування пароля:<pre>
"require": {
|-
|'''Багато legacy-коду'''
|У світі є собою багато старих PHP-проєктів із поганою архітектурою
|-
|'''Історична непослідовність'''
|Частина старих функцій і підходів має неідеальний дизайн
|-
|'''без зайвих зусиль написати хаотичний код'''
|Без фреймворку й архітектури проєкт оперативно стає складним
|-
|'''Не найкращий для realtime'''
|Для деяких realtime-сценаріїв частіше використовують Node.js, Go або Elixir
|-
|'''Не ключовий вибір для AI'''
|Для AI та Data Science частіше використовують Python
|-
|'''Потрібно стежити за версіями'''
|Старі PHP-версії оперативно стають ризиком безпеки
|}
 
Встановлення пакета:<pre>
== Сучасні функціональні можливості PHP ==
== Apache і Nginx ==
== Приклад коду ==
});
|-
|'''PHP 5'''
|Стара епоха PHP, багато legacy-проєктів
|-
|'''PHP 7'''
|Великий стрибок продуктивності й покращення мови
|-
|'''PHP 8'''
|Сучасна гілка з JIT, attributes, union types, enum, readonly, fibers, property hooks та іншими можливостями
|}


<?php
enum OrderStatus: string
{
case Draft = "draft";
case Paid = "paid";
case Cancelled = "cancelled";
}
</pre>Приклад match:<pre>
!Як застосовується з PHP
image: nginx:latest
{| class="wikitable"
{| class="wikitable"
<h1>Привіт, {{ $user->name }}</h1>
- .:/app
!Недолік
├── tests/
→ Браузер показує сторінку
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
|-
|-
|'''Typed properties'''
|'''int'''
|Типізація властивостей класу
|<code>10</code>
|Ціле число
|-
|-
|'''Union types'''
|'''float'''
|Один із кількох можливих типів
|<code>3.14</code>
|Дробове число
|-
|-
|'''Attributes'''
|'''string'''
|Метадані для класів, методів і властивостей
|<code>"Hello"</code>
|Рядок тексту
|-
|-
|'''Enums'''
|'''bool'''
|Обмежений набір значень
|<code>true</code>, <code>false</code>
|Логічне значення
|-
|-
|'''Readonly properties'''
|'''array'''
|Захист від зміни після ініціалізації
|<code>[1, 2, 3]</code>
|Масив
|-
|-
|'''Constructor property promotion'''
|'''object'''
|Коротший запис властивостей у конструкторі
|<code>new User()</code>
|Обʼєкт
|-
|-
|'''Match expression'''
|'''null'''
|Зручніша альтернатива switch
|<code>null</code>
|Відсутність значення
|-
|-
|'''Fibers'''
|'''resource'''
|Низькорівнева основа для cooperative multitasking
|Файл, зʼєднання
|Спеціальний ресурс
|}
|}
Приклад enum:<pre>
});
</pre>Сервер виконує PHP-код і відправляє браузеру готовий HTML.; користувач системи не бачить PHP-код.;<!DOCTYPE html>
Типова схема:<pre>
<?php


$languages = ["PHP", "JavaScript", "Python", "Java"];
!Приклади
"App\\": "src/"


foreach ($languages as $language) {
├── composer.lock
echo $language . PHP_EOL;
!Напрям
}
== Простими словами ==
</pre>Асоціативний масив:<pre>
</head>
!Компонент
<?php


namespace App\Service;
PHP часто запускають у Docker.; |-
 
| style="background:#fff3cd; color:#856404; font-weight:bold;" |істотно
class UserService
|'''PHP часто має погану репутацію через старий код'''
{
|Багато критики PHP повʼязано зі старими підходами, а не з сучасною мовою.; WORKDIR /app
public function createUser(): void
== PHP і продуктивність ==
{
Він надає можливість:
// логіка створення користувача
PHP має змогу генерувати HTML напряму, але у фреймворках часто використовують шаблонізатори.; * офіційно затверджений сайт PHP: https://www.php.net/
}
}
</pre>
== PHP і HTML ==
== Недоліки PHP ==
{| class="wikitable"
!Пояснення
 
== PHP і якість коду ==
Популярні шаблонізатори:
 
!характеристика
 
* enterprise-проєктах;
* складних backend-системах;
* довгострокових продуктах;
* проєктах, де потрібна сувора технічна архітектура;
* системах із великою кількістю інтеграцій.;<?php
 
$name = "Anna";
$age = 17;
 
echo "Привіт, $name! Тобі $age років.";
</pre>Функція:<pre>
 
* реліз PHP;
* OPcache;
* якість SQL-запитів;
* кешування;
* індекси в базі даних;
* технічна архітектура застосунку;
* черги;
* асинхронна обробка;
* web-сервер;
* конфігурація PHP-FPM;
* кількість залежностей.; Приклад простої JSON-відповіді:<pre>
 
* каталог товарів;
* кошик;
* оформлення замовлення;
* оплати;
* доставка;
* промокоди;
* залишки на складі;
* особистий кабінет;
* інтеграційні функціональні можливості з CRM або ERP.; * офіційно затверджений сайт PHP: https://www.php.net/
* Завантаження PHP: https://www.php.net/downloads.php
* Завантаження PHP: https://www.php.net/downloads.php
* Підтримувані версії PHP: https://www.php.net/supported-versions.php
* Підтримувані версії PHP: https://www.php.net/supported-versions.php

Поточна версія на 17:32, 6 травня 2026

];

├── src/

Namespace

<?php echo "Привіт з PHP!"; ?>

!Значення

Laravel — найпопулярніший сучасний PHP-фреймворк.; Це мова величезної частини вебу, яка продовжує розвиватися і залишається практичною для бізнесу.

→ PHP-застосунок

PHP і якість коду

Packagist — це головне сховище PHP-пакетів для Composer.; Приклад маршруту Laravel:

→ База даних
!Пояснення
<?php

echo "Hello, world!";

Змінні:

== PHP 5, PHP 7 і PHP 8 ==
 return view('welcome');
|-
|'''[[PHPStan]]'''
|Статичний аналіз коду
|-
|'''[[Psalm]]'''
|Статичний аналіз і перевірка типів
|-
|'''[[PHP-CS-Fixer]]'''
|Автоматичне форматування коду
|-
|'''[[PHP_CodeSniffer]]'''
|Перевірка стандартів коду
|-
|'''[[Rector]]'''
|Автоматичний refactoring і актуалізація коду
|-
|'''[[Composer Audit]]'''
|Перевірка вразливостей у залежностях
|}

== PHP і шаблони ==
<?php

header("Content-Type: application/json");

echo json_encode([
 "status" => "ok",

PHP і безпека

!Порівняння з PHP

Основні особливості PHP

Його популярність пояснюється тим, що: PHP часто функціонує з web-серверами: !Тип !Пояснення

nginx:

Типова схема:

Багато компонентів Symfony використовуються в інших PHP-проєктах, включно з Laravel.;</body>
== Apache і Nginx ==

== Висновок ==

PHP залишається однією з найважливіших мов веброзробки.; !Web-сервер
Браузер користувача
== Важливі акценти ==
Приклад простої JSON-відповіді:<syntaxhighlight lang="php">
== Мінімальний набір для першого PHP-проєкту ==
Приклад простої PHP-сторінки:<syntaxhighlight lang="html">
echo $user->sayHello();
PHP має змогу бути корисним у ERP і корпоративних системах для:
echo $user ["name"];
 }

Symfony часто використовують у:
== переважні аспекти PHP ==
Приклад PDO:<syntaxhighlight lang="php">
Одна з головних причин популярності PHP — '''WordPress'''.; PHP історично дуже тісно повʼязаний з HTML.;== PHP і тестування ==

* фреймворк;
* модульну архітектуру;
* ORM;
* міграції;
* тести;
* черги;
* логування;
* контроль доступів;
* документацію API;
* code review.; {| class="wikitable"

* каталог товарів;
* кошик;
* оформлення замовлення;
* оплати;
* доставка;
* промокоди;
* залишки на складі;
* особистий кабінет;
* інтеграційні функціональні можливості з CRM або ERP.; Окремо варто відзначити яка найчастіше застосовується; додатково реалізовано вебзастосунків, CMS, інтернет-магазинів, API, CRM, ERP-модулів і інших backend-систем виступає ключовою рисою створення сайтів забезпечується через '''PHP'''.; !Задача
!Рекомендація
!Інструмент
|-
|'''[[WordPress]]'''
|Найпопулярніша CMS для сайтів, блогів і магазинів
|-
|'''[[Drupal]]'''
|Потужна CMS для складних контентних і корпоративних систем
|-
|'''[[Joomla]]'''
|CMS для сайтів і порталів
|-
|'''[[Magento]]'''
|E-commerce платформа
|-
|'''[[OpenCart]]'''
|платформа для інтернет-магазинів
|}

!Параметр
public/index.php

!Пояснення

* WooCommerce;
* Magento;
* OpenCart;
* PrestaShop;
* Laravel-магазини;
* custom e-commerce.;<h1>Привіт, {{ $user->name }}</h1>

!База даних
│ ├── Service/
Сучасний PHP підтримує роботу багато можливостей, яких не було в старому PHP.;</h1>

* маршрутизацію;
* ORM Eloquent;
* міграції бази даних;
* Blade-шаблони;
* черги;
* події;
* авторизацію;
* middleware;
* тести;
* CLI Artisan;
* екосистему пакетів.; !Можливість

* встановлювати бібліотеки;
* керувати версіями пакетів;
* підключати автозавантаження класів;
* описувати залежності проєкту;
* працювати з Packagist.; |-
|'''Frontend'''
|JavaScript, TypeScript
|-
|'''AI / Data Science'''
|Python, R, Julia
|-
|'''Enterprise backend'''
|Java, C#
|-
|'''High-performance backend'''
|Go, Rust
|-
|'''Realtime-системи'''
|Node.js, Go, Elixir
|-
|'''Mobile Android'''
|Kotlin
|-
|'''Mobile iOS'''
|Swift
|-
|'''Системне програмування'''
|C, C++, Rust
|}

!реліз
Популярні інструменти:
== Обʼєктно-орієнтоване програмування в PHP ==
це популярна серверна мова програмування.; → Nginx
{| class="wikitable"

<?php

$pdo = new PDO(
 "mysql:host=localhost;dbname=test;charset=utf8mb4",
 "user",
 "password"
);

$stmt = $pdo->query("SELECT * FROM users");

* enterprise-проєктах;
* складних backend-системах;
* довгострокових продуктах;
* проєктах, де потрібна сувора технічна архітектура;
* системах із великою кількістю інтеграцій.; |}

Symfony

→ Web-сервер

Головна ідея PHP

Основні типи даних у PHP:

Його часто використовують разом із Nginx або Apache для обробки PHP-запитів.; Приклад хешування пароля:

 "guzzlehttp/guzzle": "^7.0"
{| class="wikitable"
== PHP у бізнесі ==
!CMS
 }
|-
|'''[[MySQL]]'''
|Класичний вибір для PHP-сайтів, CMS і магазинів
|-
|'''[[MariaDB]]'''
|Популярна альтернатива MySQL
|-
|'''[[PostgreSQL]]'''
|Потужна реляційна база для складніших систем
|-
|'''[[SQLite]]'''
|Легка файлова база для малих застосунків і тестів
|-
|'''[[Redis]]'''
|Кеш, сесії, черги, тимчасові інформаційні дані
|-
|'''[[MongoDB]]'''
|Документоорієнтована база для окремих сценаріїв
|}
 return User::all();

Сервер виконує PHP-код і відправляє браузеру готовий HTML.; ├── vendor/

} !Фреймворк <!DOCTYPE html> <?php

$name = "Anna"; $age = 17;

echo "Привіт, $name! Тобі $age років.";

</syntaxhighlight>Функція:

Приклади:
== PHP у ERP та корпоративних системах ==

 <title>PHP Page</title>
<?php

$password = "secret-password";

$hash = password_hash($password, PASSWORD_DEFAULT);

if (password_verify("secret-password", $hash)) {
 echo "Пароль правильний";
}

Route::get('/users', function () {

  • HTTP-клієнти;
  • ORM;
  • фреймворки;
  • бібліотеки для PDF;
  • бібліотеки для Excel;
  • SDK для API;
  • пакети для тестування;
  • пакети для логування;
  • інтеграції з платіжними системами.; користувач системи не бачить PHP-код.; |-

| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове |PHP простий для старту

|Першу сторінку можна створити дуже оперативно.;

|-
|'''Простий старт'''
|без зайвих зусиль створити перший сайт або скрипт
|-
|'''Дуже поширений у вебі'''
|Багато сайтів, CMS і магазинів працюють на PHP
|-
|'''Дешевий хостинг'''
|PHP підтримується майже всіма хостингами
|-
|'''Велика програмний пакет'''
|Composer, Packagist, Laravel, Symfony, WordPress
|-
|'''Добрий для бізнес-сайтів'''
|Підходить для CMS, e-commerce, кабінетів і адмінпанелей
|-
|'''Сучасний ООП'''
|PHP 8.x має багато сучасних можливостей
|-
|'''Велика спільнота'''
|Багато документації, прикладів, розробників і готових рішень
|}

== PHP у e-commerce ==
!Мова
== Коли PHP — хороший вибір ==
!Компонент
|-
|'''Багато legacy-коду'''
|У світі є собою багато старих PHP-проєктів із поганою архітектурою
|-
|'''Історична непослідовність'''
|Частина старих функцій і підходів має неідеальний дизайн
|-
|'''без зайвих зусиль написати хаотичний код'''
|Без фреймворку й архітектури проєкт оперативно стає складним
|-
|'''Не найкращий для realtime'''
|Для деяких realtime-сценаріїв частіше використовують Node.js, Go або Elixir
|-
|'''Не ключовий вибір для AI'''
|Для AI та Data Science частіше використовують Python
|-
|'''Потрібно стежити за версіями'''
|Старі PHP-версії оперативно стають ризиком безпеки
|}

!Пояснення
 "php": "^8.2",
!Навіщо потрібна
composer require guzzlehttp/guzzle
 "cancelled" => "Скасовано",
|-
|'''PHP 5'''
|Стара епоха PHP, багато legacy-проєктів
|-
|'''PHP 7'''
|Великий стрибок продуктивності й покращення мови
|-
|'''PHP 8'''
|Сучасна гілка з JIT, attributes, union types, enum, readonly, fibers, property hooks та іншими можливостями
|}

<html>
!Правило
!Напрям
Приклад простого <code>Dockerfile</code>:<syntaxhighlight lang="dockerfile">
│ ├── Controller/
|-
|'''Typed properties'''
|Типізація властивостей класу
|-
|'''Union types'''
|Один із кількох можливих типів
|-
|'''Attributes'''
|Метадані для класів, методів і властивостей
|-
|'''Enums'''
|Обмежений набір значень
|-
|'''Readonly properties'''
|Захист від зміни після ініціалізації
|-
|'''Constructor property promotion'''
|Коротший запис властивостей у конструкторі
|-
|'''Match expression'''
|Зручніша альтернатива switch
|-
|'''Fibers'''
|Низькорівнева основа для cooperative multitasking
|}
PHP дуже важливий у CMS-екосистемі.; |-
|'''Велика програмний пакет'''
|є собою Composer, Packagist, Laravel, Symfony, WordPress та інші інструменти.; На продуктивність впливають:

PHP-FPM — це FastCGI Process Manager для PHP.;

PHP — це мова, яка багато років тримає значну частину вебу: від простих сайтів до великих CMS, магазинів і бізнес-систем.

Symfony — потужний PHP-фреймворк і набір компонентів для великих застосунків.; {| class="wikitable" !Етап

Пояснення
build: .; !Значення

COPY .;== Для чого застосовується PHP == Для великих ERP-проєктів істотно використовувати:

</syntaxhighlight>Приклад сервісів:
Типові задачі:
|-
|'''[[PHPUnit]]'''
|Unit та integration тести
|-
|'''[[Pest]]'''
|Сучасний тестовий фреймворк із простим синтаксисом
|-
|'''[[Behat]]'''
|BDD-тестування
|-
|'''[[Codeception]]'''
|Functional, acceptance і API-тести
|}
PHP має стару репутацію, але сучасний PHP 8.x — це вже значно сильніша, швидша й більш структурована мова, ніж PHP минулих років.;<blockquote>'''PHP — це не мова минулого.; |-
|'''Простий старт'''
|без зайвих зусиль створити першу сторінку або скрипт.; {| class="wikitable"

{| class="wikitable sortable"
<?php

use PHPUnit\Framework\TestCase;

class MathTest extends TestCase
{
 public function testAdd(): void
 {
 $this->assertEquals(5, 2 + 3);

 "require": {
Приклад composer.json:
→ PHP-скрипт
Популярні шаблонізатори:
PHP створювався як проста мова для генерації HTML-сторінок на сервері.; {| class="wikitable"
Приклад API route:
== Коротко ==
 "psr-4": {
│ ├── Repository/
PHP має інструменти для автоматичного тестування.; '''Composer''' — це центральний менеджер залежностей у PHP.;<blockquote>'''Якщо потрібно зробити сайт, CMS, інтернет-магазин, кабінет клієнта, адмінпанель або backend на Laravel — PHP досі є собою дуже практичним вибором.'''</blockquote>
Браузер
<body>
|-
|'''[[Laravel]]'''
|Web / Backend
|Сучасні web-застосунки, API, SaaS, адмінпанелі, бізнес-системи
|-
|'''[[Symfony]]'''
|Enterprise / Components
|Великі системи, reusable components, складні backend-проєкти
|-
|'''[[Yii]]'''
|Web
|Швидка розробка програмного забезпечення web-застосунків
|-
|'''[[CodeIgniter]]'''
|Web
|Легкі web-проєкти, прості сайти й застосунки
|-
|'''[[Slim]]'''
|Microframework
|Невеликі API й мікросервіси
|-
|'''[[Laminas]]'''
|Enterprise
|Корпоративні PHP-застосунки
|}

PHP добре функціонує з базами даних.; default => "Невідомо",
<?php

class User
{
 public function __construct(
 public string $name,
 public string $email
 ) {
 }

 public function sayHello(): string
 {
 return "Привіт, я {$this->name}";
→ PHP-FPM
 volumes:
Через Packagist можна встановлювати:

print_r($users);
echo $message;
Класична схема роботи PHP виглядає так:
!Приклад
|-
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
|'''PHP дуже поширений у вебі'''
|На PHP працюють WordPress, Drupal, Joomla, Laravel-проєкти та велика кількість сайтів.; !Статус
'''WordPress''' — це CMS, написана на PHP.;<blockquote>'''Якщо у світі існує багато сайтів на WordPress, то PHP автономно залишається важливою мовою вебу.'''</blockquote>
== Composer ==

│ └── index.php
У Laravel API зазвичай створюють через controllers, routes і resources.; |-
інтеграційні функціональні можливості з HTML - Ключове Сучасний PHP сильно відрізняється від старого PHP PHP 8.x має типізацію, атрибути, enum, сучасний ООП-підхід, покращену продуктивність.;== PHP у порівнянні з іншими мовами == Що вивчати

Джерела

Теза

Структура PHP-проєкту

  • SQL Injection;
  • XSS;
  • CSRF;
  • небезпечне завантаження файлів;
  • слабка авторизація;
  • витік сесій;
  • неправильна робота з паролями;
  • небезпечні залежності;
  • неправильні права на файли.; },

PHP-проєкти мають типові web-ризики:

</syntaxhighlight>У сучасних PHP-проєктах зазвичай вхідною точкою є собою файл:
Приклад простої структури сучасного PHP-проєкту:<syntaxhighlight lang="text">
== PHP і бази даних ==
== PHP і HTML ==

!Як застосовується PHP
<?php

$languages = ["PHP", "JavaScript", "Python", "Java"];

foreach ($languages as $language) {
 echo $language . PHP_EOL;
}
Асоціативний масив:
!Особливість
{| class="wikitable"
}
<head>
|-
|'''Серверна мова'''
|PHP-код виконується на сервері, а користувач системи отримує результат.; |-
|'''Динамічна типізація'''
|PHP має змогу автономно визначати типи значень.;<?php

namespace App\Service;

class UserService
{
 public function createUser(): void
 {
 // логіка створення користувача
 }
}

PHP сильно змінився за останні роки.; Він отримує вже готовий HTML, JSON або іншу відповідь.;</syntaxhighlight>

Для чого
Apache Класичний варіант, часто з mod_php або PHP-FPM
Nginx Часто застосовується з PHP-FPM
Caddy Сучасний web-сервер із автоматичним HTTPS

!Чи підходить PHP?; |- |супровід типів |Сучасний PHP надає можливість явно вказувати типи параметрів, властивостей і результатів.; |- | style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове |Laravel зробив PHP дуже сильним для сучасного backend |Laravel дав зручну архітектуру, ORM, міграції, черги, тести й екосистему.; |- | style="background:#f8d7da; color:#721c24; font-weight:bold;" |Увага |Поганий PHP-код дуже без зайвих зусиль написати |Без архітектури, фреймворку, типів і тестів PHP-проєкт оперативно перетворюється на хаос.;== Недоліки PHP == !Для чого </syntaxhighlight> |- |Сайти |Генерація HTML-сторінок на сервері |Корпоративні сайти, блоги, landing pages |- |CMS |Керування контентом |WordPress, Drupal, Joomla |- |Інтернет-магазини |Каталоги, кошики, замовлення, оплати |WooCommerce, Magento, OpenCart |- |Backend API |REST API, JSON-відповіді, бізнес-логіка |Laravel API, Symfony API |- |CRM |Клієнти, угоди, задачі, комунікації |Власні CRM-системи |- |ERP |обліковий облік, документи, складський облік, фінансовий блок, процеси |Внутрішні бізнес-системи |- |SaaS |Онлайн-сервіси для бізнесу |Кабінети клієнтів, адмінпанелі, billing |- |автоматизація процесів |Скрипти, інтеграції, cron-задачі |Обмін із API, імпорт/експорт даних |}

PHP створив Расмус Лердорф у 1995 році як набір інструментів для власної домашньої сторінки.;== Рекомендований шлях навчання PHP == !Якщо потрібно

PHP і WordPress

<?php $user = [ "name" => "Anna",
<?php $status = "paid"; $message = match ($status) { "draft" => "Чернетка", PHP часто застосовується для створення REST API.; Встановлення пакета:
{| class="wikitable"
}

├── public/
Назва PHP історично розшифровувалась як '''Personal Home Page''', але зараз офіційно застосовується рекурсивне значення '''PHP: Hypertext Preprocessor'''.; |-
|'''JavaScript'''
|JavaScript центральний для frontend; PHP сильний у server-side web
|-
|'''TypeScript'''
|TypeScript сильний у великих web-інтерфейсах; PHP сильний у CMS і backend-сайтах
|-
|'''Python'''
|Python сильніший в AI й automation; PHP сильніший у класичному web і CMS
|-
|'''Java'''
|Java частіше для enterprise backend; PHP простіший для web-сайтів і швидкого старту
|-
|'''C#'''
|C# сильний у .NET і enterprise; PHP часто простіший для web-хостингу й CMS
|-
|'''Go'''
|Go продуктивніший для мікросервісів; PHP має сильну web-екосистему
|}

services:
]);
!Як застосовується з PHP
Приклад enum:<syntaxhighlight lang="php">
|-
|1
|HTML і базовий CSS
|-
|2
|Основи PHP: змінні, умови, цикли, функції
|-
|3
|Масиви, форми, GET і POST
|-
|4
|Робота з файлами
|-
|5
|PDO і база даних MySQL або PostgreSQL
|-
|6
|ООП: класи, обʼєкти, інтерфейси, namespace
|-
|7
|Composer і автозавантаження
|-
|8
|Laravel або Symfony
|-
|9
|REST API, JSON, авторизація
|-
|10
|Тестування через PHPUnit або Pest
|-
|11
|Docker, PHP-FPM, Nginx
|-
|12
|Безпека, кешування, черги, CI/CD
|}

 }
<?php

enum OrderStatus: string
{
 case Draft = "draft";
 case Paid = "paid";
 case Cancelled = "cancelled";
}
Приклад match:
PHP часто обирають для бізнесу, коли потрібно:
 - "8080:80"
|-
|'''реліз PHP'''
|PHP 8.2 або новіша підтримувана реліз
|-
|'''Редактор'''
|VS Code або PhpStorm
|-
|'''Менеджер залежностей'''
|Composer
|-
|'''База даних'''
|MySQL, MariaDB або PostgreSQL
|-
|'''Web-сервер'''
|Nginx або Apache
|-
|'''Фреймворк'''
|Laravel для більшості сучасних web-проєктів
|-
|'''Тестування'''
|PHPUnit або Pest
|-
|'''Контроль версій'''
|Git
|-
|'''Форматування'''
|PHP-CS-Fixer або Laravel Pint
|}

== PHP і Docker ==

</syntaxhighlight> → HTML-відповідь

PHP має змогу використовуватися для:

  • сайти;
  • CMS;
  • WordPress;
  • інтернет-магазини;
  • Laravel-застосунки;
  • backend API;
  • адмінпанелі;
  • web-орієнтовані бізнес-системи;
  • інтеграції;
  • швидкий запуск web-проєкту.;</html>
характеристика

Сучасний PHP активно використовує обʼєктно-орієнтований підхід.; ports:

PHP — одна з найважливіших мов веброзробки.; !Інструмент

"paid" => "Оплачено",
Використовувати prepared statements Захист від SQL Injection
Екранувати HTML Захист від XSS
Використовувати CSRF-токени Захист форм від підроблених запитів
Не зберігати паролі відкритим текстом Потрібно використовувати password_hash
Оновлювати PHP і залежності Старі версії можуть містити вразливості
Не зберігати секрети в коді Ключі мають бути в environment variables

PHP і API

<?php

function add(int $a, int $b): int {

return $a + $b;

}

echo add(5, 7);

</syntaxhighlight>Масив:
== Популярність PHP ==
Laravel дає:

<blockquote>'''PHP добре підходить для web-орієнтованих бізнес-систем, особливо якщо потрібна швидка розробка програмного забезпечення й багато готових компонентів.'''</blockquote>

* реліз PHP;
* OPcache;
* якість SQL-запитів;
* кешування;
* індекси в базі даних;
* технічна архітектура застосунку;
* черги;
* асинхронна обробка;
* web-сервер;
* конфігурація PHP-FPM;
* кількість залежностей.;== PHP і CMS ==
 "role" => "student"
== Packagist ==
Приклад Blade:<syntaxhighlight lang="html">
PHP став особливо важливим для розвитку динамічного вебу, CMS і блогів.; "autoload": {
{| class="wikitable"
│ └── Entity/
{| class="wikitable"
== Альтернативи PHP ==
!Перевага

Вона сильна там, де потрібні:
== PHP-FPM ==

!Для чого застосовується
{| class="wikitable"
{
{| class="wikitable"
|-
|Корпоративний сайт
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|WordPress-сайт
| style="background:#d4edda; color:#155724; font-weight:bold;" |Найкращий вибір
|-
|Інтернет-магазин
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|Laravel backend
| style="background:#d4edda; color:#155724; font-weight:bold;" |Дуже добре
|-
|CRM / ERP web-модулі
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|REST API
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|SaaS
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|Realtime chat
| style="background:#fff3cd; color:#856404; font-weight:bold;" |Можливо, але не ключовий вибір
|-
|AI / Machine Learning
| style="background:#fff3cd; color:#856404; font-weight:bold;" |Не ключовий вибір
|-
|Системне програмування
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Не підходить
|}

Route::get('/', function () {

  • оперативно запустити сайт;
  • зробити інтернет-магазин;
  • підтримувати WordPress;
  • розробити Laravel-застосунок;
  • створити API;
  • зробити адмінпанель;
  • інтегрувати сайт з CRM або ERP;
  • зробити кабінет клієнта;
  • автоматизувати документи;
  • обробляти заявки;
  • створити billing або SaaS.;

    PHP — це мова, яка створює сторінку або відповідь на сервері, а браузер отримує вже результат.

├── composer.json

Типи даних

→ HTTP-запит

}

PHP у бізнес-системах

└── README.md

Як застосовується з PHP

З часом PHP перетворився на повноцінну серверну мову програмування, яка стала дуже популярною завдяки наявності простоті розгортання, дешевому хостингу та прямій інтеграції з HTML.; /app

</syntaxhighlight>

Популярні PHP-фреймворки

image: nginx:latest

завдяки наявності Namespace користувачі можуть організовувати класи й уникати конфліктів назв.; |-

Назва PHP
Повна назва PHP: Hypertext Preprocessor
Тип Серверна скриптова мова програмування
Автор Расмус Лердорф
Перший реліз 1995 рік
Основні сфери Web backend, CMS, e-commerce, API, CRM, ERP, SaaS
Актуальна основна гілка станом на 2026 рік PHP 8.5
Популярні фреймворки Laravel, Symfony, Yii, CodeIgniter, Slim
Популярні CMS WordPress, Drupal, Joomla
Складність для новачків Низька або середня
офіційно затверджений сайт https://www.php.net/

Сучасний PHP значно продуктивніший, ніж старі версії.; "message" => "Hello from PHP API"

Історичний розвиток

  • web-інтерфейсів;
  • кабінетів користувача;
  • API;
  • інтеграцій;
  • звітів;
  • документообігу;
  • адмінпанелей;
  • модулів для клієнтського доступу;
  • обміну з сайтами й маркетплейсами.; !Альтернативи
Приклад класу:
* PHP давно існує;
* його без зайвих зусиль розгорнути на хостингу;
* на PHP функціонує WordPress;
* є собою багато готових CMS і фреймворків;
* PHP добре підходить для сайтів, магазинів, кабінетів і бізнес-систем;
* навколо PHP існує велика кількість розробників, документації й готових рішень.; Вона застосовується для створення:
PHP — це мова для серверної частини вебу.; |-
|'''Обʼєктно-орієнтоване програмування'''
|PHP підтримує роботу класи, інтерфейси, трейти, enum, namespace.; $user = new User("Anna", "anna@example.com");
FROM php:8.4-fpm

});

* блогів;
* корпоративних сайтів;
* медіа-сайтів;
* інтернет-магазинів;
* landing pages;
* сайтів послуг;
* особистих сайтів;
* контентних платформ.;

Сучасні функціональні можливості PHP

Пояснення
php:
Приклад PHPUnit-тесту:
== Приклад коду ==

{| class="wikitable"
Тобто PHP функціонує переважно на сервері.; };

Найпростіша програма:<syntaxhighlight lang="php"> project/

"age" => 17,
  • Blade у Laravel;
  • Twig у Symfony;
  • Smarty у старих або legacy-проєктах.; });

Laravel

  • CRM;
  • ERP-модулів;
  • адмінпанелей;
  • кабінетів клієнта;
  • внутрішніх порталів;
  • документообігу;
  • інтеграцій з банками;
  • інтеграцій з платіжними системами;
  • інтеграцій з РРО;
  • звітів;
  • автоматизації бізнес-процесів.; PHP часто застосовується для інтернет-магазинів.; |}
- .:/app
Недолік

├── tests/ → Браузер показує сторінку $users = $stmt->fetchAll(PDO::FETCH_ASSOC);

int 10 Ціле число
float 3.14 Дробове число
string "Hello" Рядок тексту
bool true, false Логічне значення
array [1, 2, 3] Масив
object new User() Обʼєкт
null null Відсутність значення
resource Файл, зʼєднання Спеціальний ресурс
Приклади
"App\\": "src/"

├── composer.lock

Напрям

Простими словами

</head>

PHP часто запускають у Docker.; |-

істотно PHP часто має погану репутацію через старий код Багато критики PHP повʼязано зі старими підходами, а не з сучасною мовою.; WORKDIR /app

PHP і продуктивність

Він надає можливість: PHP має змогу генерувати HTML напряму, але у фреймворках часто використовують шаблонізатори.; * офіційно затверджений сайт PHP: https://www.php.net/