PHP: відмінності між версіями
R (обговорення | внесок) Первинна публікація |
R (обговорення | внесок) Первинна публікація |
||
| Рядок 1: | Рядок 1: | ||
</ | ]; | ||
├── src/ | |||
== Namespace == | |||
<?php echo "Привіт з PHP!"; ?> | |||
!Значення | |||
'''Laravel''' — найпопулярніший сучасний PHP-фреймворк.; Це мова величезної частини вебу, яка продовжує розвиватися і залишається практичною для бізнесу.'''</blockquote> | |||
→ PHP-застосунок | |||
== PHP і якість коду == | |||
'''Packagist''' — це головне сховище PHP-пакетів для Composer.; Приклад маршруту Laravel:<syntaxhighlight lang="php"> | |||
→ База даних | |||
!Пояснення | |||
<?php | |||
echo "Hello, world!"; | |||
</syntaxhighlight>Змінні:<syntaxhighlight lang="php"> | |||
</ | == PHP 5, PHP 7 і PHP 8 == | ||
PHP | 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", | |||
</syntaxhighlight> | |||
== PHP і безпека == | == PHP і безпека == | ||
!Порівняння з 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'''.; !Задача | |||
!Рекомендація | |||
!Інструмент | |||
|- | |- | ||
| | |'''[[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 | !реліз | ||
Популярні інструменти: | |||
</ | == Обʼєктно-орієнтоване програмування в 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-системах; | |||
* довгострокових продуктах; | |||
* проєктах, де потрібна сувора технічна архітектура; | |||
* системах із великою кількістю інтеграцій.; |} | |||
</syntaxhighlight> | |||
== Symfony == | |||
→ Web-сервер | |||
== Головна ідея PHP == | |||
Основні типи даних у PHP: | |||
Його часто використовують разом із Nginx або Apache для обробки PHP-запитів.; Приклад хешування пароля:<syntaxhighlight lang="php"> | |||
"guzzlehttp/guzzle": "^7.0" | |||
{| class="wikitable" | |||
== PHP у бізнесі == | |||
!CMS | |||
} | |||
|- | |- | ||
|''' | |'''[[MySQL]]''' | ||
|PHP | |Класичний вибір для PHP-сайтів, CMS і магазинів | ||
|- | |- | ||
|''' | |'''[[MariaDB]]''' | ||
| | |Популярна альтернатива MySQL | ||
|- | |- | ||
|''' | |'''[[PostgreSQL]]''' | ||
| | |Потужна реляційна база для складніших систем | ||
|- | |- | ||
|''' | |'''[[SQLite]]''' | ||
| | |Легка файлова база для малих застосунків і тестів | ||
|- | |- | ||
|''' | |'''[[Redis]]''' | ||
| | |Кеш, сесії, черги, тимчасові інформаційні дані | ||
|- | |- | ||
|''' | |'''[[MongoDB]]''' | ||
| | |Документоорієнтована база для окремих сценаріїв | ||
|} | |} | ||
return User::all(); | |||
</syntaxhighlight>Сервер виконує PHP-код і відправляє браузеру готовий HTML.; ├── vendor/ | |||
} | |||
!Фреймворк | |||
<!DOCTYPE html> | |||
<?php | |||
$name = "Anna"; | |||
$age = 17; | |||
echo "Привіт, $name! Тобі $age років."; | |||
</syntaxhighlight>Функція:<syntaxhighlight lang="php"> | |||
Приклади: | |||
== PHP у ERP та корпоративних системах == | |||
<title>PHP Page</title> | |||
<?php | <?php | ||
| Рядок 113: | Рядок 255: | ||
echo "Пароль правильний"; | echo "Пароль правильний"; | ||
} | } | ||
</ | </syntaxhighlight> | ||
Route::get('/users', function () { | |||
Route::get('/', function () { | |||
* HTTP-клієнти; | |||
* ORM; | |||
* фреймворки; | |||
* бібліотеки для PDF; | |||
* бібліотеки для Excel; | |||
* SDK для API; | |||
< | * пакети для тестування; | ||
* пакети для логування; | |||
* інтеграції з платіжними системами.; користувач системи не бачить PHP-код.; |- | |||
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове | |||
|'''PHP простий для старту''' | |||
|Першу сторінку можна створити дуже оперативно.;<syntaxhighlight lang="php"> | |||
|- | |- | ||
|'''Простий старт''' | |'''Простий старт''' | ||
| Рядок 165: | Рядок 294: | ||
|} | |} | ||
== PHP у e-commerce == | |||
!Мова | |||
== Коли PHP — хороший вибір == | |||
!Компонент | |||
|- | |||
|'''Багато legacy-коду''' | |||
|У світі є собою багато старих PHP-проєктів із поганою архітектурою | |||
|- | |||
|'''Історична непослідовність''' | |||
|Частина старих функцій і підходів має неідеальний дизайн | |||
|- | |||
|'''без зайвих зусиль написати хаотичний код''' | |||
|Без фреймворку й архітектури проєкт оперативно стає складним | |||
|- | |||
|'''Не найкращий для realtime''' | |||
|Для деяких realtime-сценаріїв частіше використовують Node.js, Go або Elixir | |||
|- | |||
|'''Не ключовий вибір для AI''' | |||
|Для AI та Data Science частіше використовують Python | |||
|- | |||
|'''Потрібно стежити за версіями''' | |||
|Старі PHP-версії оперативно стають ризиком безпеки | |||
|} | |||
!Пояснення | |||
"php": "^8.2", | |||
!Навіщо потрібна | !Навіщо потрібна | ||
PHP | composer require guzzlehttp/guzzle | ||
PHP- | "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 та інші інструменти.; На продуктивність впливають: | |||
</syntaxhighlight> | |||
'''PHP-FPM''' — це FastCGI Process Manager для PHP.;<blockquote>'''PHP — це мова, яка багато років тримає значну частину вебу: від простих сайтів до великих CMS, магазинів і бізнес-систем.'''</blockquote> | |||
'''Symfony''' — потужний PHP-фреймворк і набір компонентів для великих застосунків.; {| class="wikitable" | |||
!Етап | |||
{| class="wikitable" | {| class="wikitable" | ||
!Пояснення | |||
build: .; !Значення | |||
COPY .;== Для чого застосовується PHP == | |||
Для великих ERP-проєктів істотно використовувати: | |||
</syntaxhighlight>Приклад сервісів:<syntaxhighlight lang="yaml"> | |||
Типові задачі: | |||
== | |||
|- | |- | ||
|'''[[ | |'''[[PHPUnit]]''' | ||
| | |Unit та integration тести | ||
|- | |- | ||
|'''[[ | |'''[[Pest]]''' | ||
| | |Сучасний тестовий фреймворк із простим синтаксисом | ||
|- | |- | ||
|'''[[ | |'''[[Behat]]''' | ||
| | |BDD-тестування | ||
|- | |- | ||
|'''[[ | |'''[[Codeception]]''' | ||
| | |Functional, acceptance і API-тести | ||
|} | |} | ||
PHP має стару репутацію, але сучасний PHP 8.x — це вже значно сильніша, швидша й більш структурована мова, ніж PHP минулих років.;<blockquote>'''PHP — це не мова минулого.; |- | |||
|'''Простий старт''' | |||
|без зайвих зусиль створити першу сторінку або скрипт.; {| class="wikitable" | |||
= | {| class="wikitable sortable" | ||
<?php | <?php | ||
$ | 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"> | |||
→ PHP-скрипт | |||
Популярні шаблонізатори: | |||
│ ├── | PHP створювався як проста мова для генерації HTML-сторінок на сервері.; {| class="wikitable" | ||
</syntaxhighlight>Приклад API route:<syntaxhighlight lang="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" | ||
} | |||
<head> | |||
|- | |||
|'''Серверна мова''' | |||
|PHP-код виконується на сервері, а користувач системи отримує результат.; |- | |||
|'''Динамічна типізація''' | |||
|PHP має змогу автономно визначати типи значень.;<?php | |||
namespace App\Service; | |||
class UserService | |||
{ | |||
public function createUser(): void | |||
{ | |||
// логіка створення користувача | |||
} | |||
} | |||
</syntaxhighlight> | |||
PHP сильно змінився за останні роки.; Він отримує вже готовий HTML, JSON або іншу відповідь.;</syntaxhighlight> | |||
<h1> | |||
!Для чого | |||
|- | |||
|'''[[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 == | ||
!Якщо потрібно | |||
{| class="wikitable" | |||
== PHP і WordPress == | |||
{| class="wikitable" | |||
<?php | |||
$user = [ | |||
"name" => "Anna", | |||
{| class="wikitable" | |||
<?php | |||
$status = "paid"; | |||
= | $message = match ($status) { | ||
" | "draft" => "Чернетка", | ||
PHP часто застосовується для створення REST API.; Встановлення пакета:<syntaxhighlight lang="bash"> | |||
{| 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#''' | ||
|PHP- | |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"; | |||
} | |||
</syntaxhighlight>Приклад match:<syntaxhighlight lang="php"> | |||
PHP часто обирають для бізнесу, коли потрібно: | |||
- "8080:80" | |||
|- | |||
|'''реліз PHP''' | |||
|PHP 8.2 або новіша підтримувана реліз | |||
'''PHP | |||
|- | |- | ||
|''' | |'''Редактор''' | ||
| | |VS Code або PhpStorm | ||
|- | |- | ||
|''' | |'''Менеджер залежностей''' | ||
| | |Composer | ||
|- | |- | ||
|''' | |'''База даних''' | ||
| | |MySQL, MariaDB або PostgreSQL | ||
|- | |- | ||
|''' | |'''Web-сервер''' | ||
| | |Nginx або Apache | ||
|- | |- | ||
|''' | |'''Фреймворк''' | ||
| | |Laravel для більшості сучасних web-проєктів | ||
|- | |- | ||
|''' | |'''Тестування''' | ||
| | |PHPUnit або Pest | ||
|- | |- | ||
|''' | |'''Контроль версій''' | ||
| | |Git | ||
|- | |- | ||
|''' | |'''Форматування''' | ||
| | |PHP-CS-Fixer або Laravel Pint | ||
|} | |} | ||
== PHP і Docker == | |||
< | </syntaxhighlight> | ||
</syntaxhighlight> | |||
→ HTML-відповідь | |||
PHP має змогу використовуватися для: | |||
* сайти; | |||
* CMS; | |||
* WordPress; | |||
* інтернет-магазини; | |||
* Laravel-застосунки; | |||
* backend API; | |||
* адмінпанелі; | |||
* web-орієнтовані бізнес-системи; | |||
* інтеграції; | |||
* швидкий запуск web-проєкту.;</html> | |||
!характеристика | |||
Сучасний PHP активно використовує обʼєктно-орієнтований підхід.; ports: | |||
'''PHP''' — одна з найважливіших мов веброзробки.; !Інструмент | |||
"paid" => "Оплачено", | |||
{| class="wikitable sortable" | |||
" | |||
|- | |- | ||
|'''Використовувати prepared statements''' | |'''Використовувати prepared statements''' | ||
| Рядок 539: | Рядок 761: | ||
|Ключі мають бути в environment variables | |Ключі мають бути в environment variables | ||
|} | |} | ||
== | == PHP і API == | ||
</ | <?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;" |Не підходить | |||
|} | |||
</syntaxhighlight> | |||
Route::get('/', function () { | |||
* оперативно запустити сайт; | * оперативно запустити сайт; | ||
| Рядок 555: | Рядок 850: | ||
* автоматизувати документи; | * автоматизувати документи; | ||
* обробляти заявки; | * обробляти заявки; | ||
* створити billing або SaaS.; | * створити billing або SaaS.;<blockquote>'''PHP — це мова, яка створює сторінку або відповідь на сервері, а браузер отримує вже результат.'''</blockquote> | ||
├── composer.json | |||
{| class="wikitable" | {| class="wikitable" | ||
== Типи даних == | |||
→ HTTP-запит | |||
} | |||
== PHP у бізнес-системах == | |||
└── README.md | |||
!Як застосовується з PHP | !Як застосовується з PHP | ||
З часом PHP перетворився на повноцінну серверну мову програмування, яка стала дуже популярною завдяки наявності простоті розгортання, дешевому хостингу та прямій інтеграції з HTML.; /app | |||
</syntaxhighlight> | |||
== Популярні PHP-фреймворки == | |||
image: nginx:latest | |||
завдяки наявності '''Namespace''' користувачі можуть організовувати класи й уникати конфліктів назв.; |- | |||
</ | |||
== | |||
|'''Назва''' | |'''Назва''' | ||
|PHP | |PHP | ||
| Рядок 679: | Рядок 900: | ||
|} | |} | ||
Сучасний PHP значно продуктивніший, ніж старі версії.; "message" => "Hello from PHP API" | |||
== Історичний розвиток == | |||
== | |||
* web-інтерфейсів; | * web-інтерфейсів; | ||
| Рядок 714: | Рядок 911: | ||
* адмінпанелей; | * адмінпанелей; | ||
* модулів для клієнтського доступу; | * модулів для клієнтського доступу; | ||
* обміну з сайтами й маркетплейсами.; | * обміну з сайтами й маркетплейсами.; !Альтернативи | ||
Приклад класу:<syntaxhighlight lang="php"> | |||
* PHP давно існує; | |||
* його без зайвих зусиль розгорнути на хостингу; | |||
* на PHP функціонує WordPress; | |||
PHP | * є собою багато готових CMS і фреймворків; | ||
* PHP добре підходить для сайтів, магазинів, кабінетів і бізнес-систем; | |||
* навколо PHP існує велика кількість розробників, документації й готових рішень.; Вона застосовується для створення: | |||
PHP — це мова для серверної частини вебу.; |- | |||
|'''Обʼєктно-орієнтоване програмування''' | |||
|PHP підтримує роботу класи, інтерфейси, трейти, enum, namespace.; $user = new User("Anna", "anna@example.com"); | |||
FROM php:8.4-fpm | |||
}); | |||
* блогів; | |||
* корпоративних сайтів; | |||
* медіа-сайтів; | |||
* інтернет-магазинів; | |||
* landing pages; | |||
* сайтів послуг; | |||
* особистих сайтів; | |||
* контентних платформ.;</syntaxhighlight> | |||
== Сучасні функціональні можливості PHP == | |||
== PHP | |||
!Пояснення | !Пояснення | ||
php: | |||
Приклад PHPUnit-тесту:<syntaxhighlight lang="php"> | |||
== Приклад коду == | |||
{| class="wikitable" | |||
</syntaxhighlight>Тобто PHP функціонує переважно '''на сервері'''.; }; | |||
Найпростіша програма:<syntaxhighlight lang="php"> | |||
project/ | |||
= | "age" => 17, | ||
* Blade у Laravel; | |||
== | * Twig у Symfony; | ||
* Smarty у старих або legacy-проєктах.; }); | |||
== Laravel == | |||
* CRM; | |||
* ERP-модулів; | |||
* | * адмінпанелей; | ||
* | * кабінетів клієнта; | ||
* | * внутрішніх порталів; | ||
* | * документообігу; | ||
* | * інтеграцій з банками; | ||
* | * інтеграцій з платіжними системами; | ||
* інтеграцій з РРО; | |||
* звітів; | |||
* автоматизації бізнес-процесів.; PHP часто застосовується для інтернет-магазинів.; |} | |||
* | |||
* | |||
* | |||
* | |||
* | |||
|} | |||
{| class="wikitable" | {| class="wikitable" | ||
- .:/app | |||
!Недолік | |||
├── tests/ | |||
→ Браузер показує сторінку | |||
$users = $stmt->fetchAll(PDO::FETCH_ASSOC); | |||
|- | |- | ||
|''' | |'''int''' | ||
| | |<code>10</code> | ||
|Ціле число | |||
|- | |- | ||
|''' | |'''float''' | ||
| | |<code>3.14</code> | ||
|Дробове число | |||
|- | |- | ||
|''' | |'''string''' | ||
| | |<code>"Hello"</code> | ||
|Рядок тексту | |||
|- | |- | ||
|''' | |'''bool''' | ||
| | |<code>true</code>, <code>false</code> | ||
|Логічне значення | |||
|- | |- | ||
|''' | |'''array''' | ||
| | |<code>[1, 2, 3]</code> | ||
|Масив | |||
|- | |- | ||
|''' | |'''object''' | ||
| | |<code>new User()</code> | ||
|Обʼєкт | |||
|- | |- | ||
|''' | |'''null''' | ||
| | |<code>null</code> | ||
|Відсутність значення | |||
|- | |- | ||
|''' | |'''resource''' | ||
| | |Файл, зʼєднання | ||
|Спеціальний ресурс | |||
|} | |} | ||
!Приклади | |||
"App\\": "src/" | |||
├── composer.lock | |||
!Напрям | |||
== Простими словами == | |||
</ | </head> | ||
PHP часто запускають у Docker.; |- | |||
| style="background:#fff3cd; color:#856404; font-weight:bold;" |істотно | |||
|'''PHP часто має погану репутацію через старий код''' | |||
|Багато критики PHP повʼязано зі старими підходами, а не з сучасною мовою.; WORKDIR /app | |||
== PHP і продуктивність == | |||
Він надає можливість: | |||
PHP має змогу генерувати HTML напряму, але у фреймворках часто використовують шаблонізатори.; * офіційно затверджений сайт 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"
== Коротко ==
"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;
!Приклад
|-
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
|'''PHP дуже поширений у вебі'''
|На PHP працюють WordPress, Drupal, Joomla, Laravel-проєкти та велика кількість сайтів.; !Статус
'''WordPress''' — це CMS, написана на PHP.;<blockquote>'''Якщо у світі існує багато сайтів на WordPress, то PHP автономно залишається важливою мовою вебу.'''</blockquote>
== Composer ==
│ └── index.php
|
інтеграційні функціональні можливості з HTML | - | Ключове | Сучасний PHP сильно відрізняється від старого PHP | PHP 8.x має типізацію, атрибути, enum, сучасний ООП-підхід, покращену продуктивність.;== PHP у порівнянні з іншими мовами == | Що вивчати
Джерела |
Теза
Структура PHP-проєкту
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
{| 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";
}
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" => "Оплачено",
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 () {
├── composer.json Типи даних→ HTTP-запит } PHP у бізнес-системах└── README.md
Сучасний PHP значно продуктивніший, ніж старі версії.; "message" => "Hello from PHP 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"
Найпростіша програма:<syntaxhighlight lang="php"> project/ "age" => 17,
Laravel
|
Приклади
"App\\": "src/" ├── composer.lock |
Напрям
Простими словами</head> PHP часто запускають у Docker.; |- |
істотно | PHP часто має погану репутацію через старий код | Багато критики PHP повʼязано зі старими підходами, а не з сучасною мовою.; WORKDIR /app
PHP і продуктивністьВін надає можливість: PHP має змогу генерувати HTML напряму, але у фреймворках часто використовують шаблонізатори.; * офіційно затверджений сайт PHP: https://www.php.net/
|
|---|