PHP
];
├── 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/
|
|---|