Створення і запуск проєкту Zend Framework (Laminas) у ServBay
Огляд
Zend Framework (тепер частина проекту Laminas) — це потужний open-source фреймворк для PHP, який містить набір сучасних, об'єктно-орієнтованих компонентів для розробки веб-додатків і сервісів. Він відомий своєю гнучкістю, модульною структурою та високою продуктивністю, що робить його чудовим вибором для розробки як простих сайтів, так і складних корпоративних систем.
ServBay — це локальне середовище розробки для macOS і Windows, яке об'єднує PHP, різні веб-сервери (Caddy, Nginx), бази даних (MySQL, PostgreSQL, MongoDB), кеш-сервіси (Redis, Memcached) та інші інструменти для розробки. Завдяки простому керуванню та налаштуванню всіх пакетів, ServBay дає змогу легко запускати будь-які проєкти на основі PHP.
У цьому документі ви дізнаєтесь, як створити й запустити проєкт Zend Framework (Laminas) у середовищі ServBay, а також як інтегрувати різні бази даних і кеш-сервіси.
Необхідні умови
Перед початком переконайтеся, що виконані наступні кроки:
- Встановлений ServBay: Ви успішно інсталювали ServBay на macOS або Windows. Якщо ні, перейдіть на офіційний сайт ServBay для інструкцій щодо встановлення.
- Потрібні пакети ServBay: Переконайтесь, що у ServBay встановлено й запущено необхідні пакети:
- PHP (рекомендується 8.x або новіше, оскільки сучасні версії Zend Framework/Laminas потребують актуальної версії PHP).
- Веб-сервер (Caddy або Nginx).
- Composer (у ServBay, як правило, встановлено за замовчуванням).
- Вибрані бази даних (MySQL, PostgreSQL) та кеш-сервіси (Memcached, Redis). Активуйте их через панель керування ServBay.
Створення проєкту Zend Framework
ServBay рекомендує зберігати всі сайти у спеціальній папці, що спрощує автоматичне керування сайтами:
- macOS:
/Applications/ServBay/www
- Windows:
C:\ServBay\www
Перейти до папки сайту
Відкрийте термінал та перейдіть у рекомендовану папку:
macOS:
bashcd /Applications/ServBay/www
1Windows:
cmdcd C:\ServBay\www
1Створити проєкт через Composer
Composer вже інтегровано у ServBay. Використайте команду
create-project
, щоб створити новий skeleton-app для Zend Framework (Laminas):bashcomposer create-project laminas/laminas-skeleton-application servbay-zend-app
1Після виконання команди у теці
servbay-zend-app
з’явиться базовий проєкт.Перейти до проєкту
bashcd servbay-zend-app
1
Налаштування веб-сервера
Щоб отримати доступ до проєкту через браузер, потрібно налаштувати сайт у ServBay.
- Відкрити панель керування ServBay: Запустіть програму ServBay.
- Перейти до розділу "Сайти": Виберіть вкладку Websites (Сайти).
- Додати новий сайт: Натисніть кнопку
+
знизу, щоб додати новий сайт. - Заповнити дані:
- Назва (Name): Задайте впізнаване ім’я (наприклад,
My Zend Dev Site
). - Домен (Domain): Введіть бажаний домен з закінченням
.local
або.test
(наприклад,servbay-zend-test.local
) для локальної роботи. ServBay автоматично зробить DNS-відображення. - Тип сайту (Website Type): Оберіть
PHP
. - Версія PHP (PHP Version): Вкажіть потрібну версію PHP (наприклад,
8.3
). Переконайтесь, що вона встановлена та активна. - Корінь сайту (Document Root): Вкажіть папку
public
у вашому проєкті:/Applications/ServBay/www/servbay-zend-app/public
.
- Назва (Name): Задайте впізнаване ім’я (наприклад,
- Зберегти та перезапустити: Натисніть Save (Зберегти). ServBay застосує зміни та оновить конфігурацію сервера.
Детальну інструкцію дивіться у розділі Додавання першого сайту документації ServBay.
Базовий приклад "Hello ServBay!"
Зараз ми змінимо код так, щоб на головній сторінці відображалось "Hello ServBay!".
Налаштування маршруту та контролера (module.config.php)
Відредагуйте
module/Application/config/module.config.php
і переконайтесь, що налаштування маршрутизації містить базові налаштування:php// ... інші use // ... інший код // ... інші маршрути // ... налаштування контролерів // ... конфігурація шаблонів // Коментарі українською: // ... інші налаштування
1
2
3
4
5
6
7
8Зверніть увагу: Фрагмент коду — це частина
module.config.php
. Об’єднайте його з вже існуючим масивом конфігурації. Переконайтесь, що маршрут'home'
і фабрика дляController\IndexController::class
прописані.Створити/редагувати контролер (IndexController.php)
У файлі
module/Application/src/Controller/IndexController.php
:php<?php // Дія indexAction повертає ViewModel з текстом привітання // ... інші use class IndexController extends AbstractActionController { /** * Дія за замовчуванням, показує головну сторінку. */ public function indexAction() { // Повертаємо ViewModel з передачею змінної 'message' у шаблон return new ViewModel([ 'message' => 'Hello ServBay!', ]); } // ... інші дії }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19Створити/редагувати файл шаблону (index.phtml)
У
module/Application/view/application/index/index.phtml
:php<h1><?php echo $this->message; ?></h1>
1Використовуйте
$this->message
для доступу до даних, які передані з контролера.
Відкриття сайту у браузері
Відкрийте браузер і перейдіть за адресою, яку ви налаштували (наприклад, https://servbay-zend-test.local
). Якщо все налаштовано коректно, побачите напис Hello ServBay!
, що означає успішний запуск.
Приклади інтеграції з базами даних та кешем
ServBay підтримує різні бази даних і кеш-сервіси. Нижче наведено приклади підключення і роботи з Memcached, Redis, MySQL та PostgreSQL у проєкті Zend Framework.
Важливо: Це приклади для ознайомлення. Зазвичай обирається одна база даних та один (або більше) кеш, а підключення реалізується через dependency injection. Для запуску прикладів активуйте відповідні сервіси у ServBay.
Приклад взаємодії з базою даних — створення таблиці
На цьому етапі покажемо як створити таблицю через компонент Laminas DB.
Встановити компонент Laminas DB
У кореневій папці проєкту:
bashcomposer require laminas/laminas-db
1Створити базу даних вручну
Перед роботою з базою даних створіть базу
servbay_zend_app
в обраному сервісі (MySQL/PostgreSQL). Використайте ServBay для запуску phpMyAdmin, pgAdmin, MongoDB Compass тощо. Стандартні логін та пароль у ServBay:root
/password
.Створити скрипт для створення таблиці (create_users_table.php)
php<?php // ukrainian: Створення адаптера підключення до бази даних (MySQL/MariaDB) // Вказати параметри підключення до ServBay // ... // ukrainian: Визначення та виконання SQL для створення таблиці // ... // ukrainian: Вивести результат створення таблиці
1
2
3
4
5
6
7Запустіть цей скрипт через PHP CLI:
bashphp create_users_table.php
1
MySQL: Робота з базою
Підключення та запит даних із MySQL у контролері Zend Framework.
Налаштувати підключення до бази
У
config/autoload/global.php
:php<?php // ukrainian: Конфігурація для MySQL у ServBay return [ 'db' => [ 'driver' => 'Pdo_Mysql', 'database' => 'servbay_zend_app', // база повинна існувати 'username' => 'root', // логін за замовчуванням 'password' => 'password', // пароль за замовчуванням 'hostname' => '127.0.0.1', 'port' => 3306, 'charset' => 'utf8mb4', ], // ... інші налаштування ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14Налаштувати фабрику контролера (module.config.php)
Внесіть зміни для впровадження
Adapter
у контролер:php<?php // ukrainian: Фабрика контролера для інʼєкції адаптера бази даних // ... інші налаштування
1
2
3Примітка: Об’єднайте цю частину з існуючою конфігурацією.
Додати маршрути для MySQL-прикладу
php<?php // ukrainian: Нові маршрути для додавання та перегляду користувачів через MySQL
1
2Додайте ці маршрути у масив
'routes'
.Методи контролера для роботи з MySQL
Додайте конструктор та дії до
IndexController.php
:php<?php // ukrainian: Конструктор та дії для роботи з MySQL // Додавання користувача та вивід списку у JSON
1
2
3Створити шаблони перегляду
module/Application/view/application/index/mysql-add.phtml
:php<h1><?php echo $this->message; ?></h1>
1module/Application/view/application/index/mysql.phtml
:php<h1>MySQL Users</h1> <pre><?php echo $this->users; ?></pre>
1
2Тест
Перейдіть на
https://servbay-zend-test.local/mysql-add
для додавання тестового користувача й наhttps://servbay-zend-test.local/mysql
для перегляду всіх користувачів.
PostgreSQL: Робота з базою
Аналогічно до MySQL, тільки параметри підключення змінюються.
Налаштувати підключення
config/autoload/global.php
:php<?php // ukrainian: Конфігурація для PostgreSQL у ServBay return [ 'db' => [ 'driver' => 'Pdo_Pgsql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', 'port' => 5432, ], // ... інші налаштування ];
1
2
3
4
5
6
7
8
9
10
11
12
13Інʼєкція адаптера і фабрика (фабрика контролера, як для MySQL)
Нові маршрути для PostgreSQL
php<?php // ukrainian: Додавання маршрутів для роботи з PostgreSQL
1
2Методи контролера для PostgreSQL
Додайте методи
pgsqlAddAction
іpgsqlAction
до контролера:php<?php // ukrainian: Методи додавання користувача та перегляду списку у PostgreSQL
1
2Створити шаблони
module/Application/view/application/index/pgsql-add.phtml
:php<h1><?php echo $this->message; ?></h1>
1module/Application/view/application/index/pgsql.phtml
:php<h1>PostgreSQL Users</h1> <pre><?php echo $this->users; ?></pre>
1
2Тест
Перейдіть на
https://servbay-zend-test.local/pgsql-add
таhttps://servbay-zend-test.local/pgsql
.
Інтеграція Memcached
Приклад використання Memcached для кешування у контролері.
Встановити адаптер Memcached
У
composer.json
додайте:json// require: "laminas/laminas-cache-storage-adapter-memcached": "^2.0"
1Виконайте:
bashcomposer update
1(расширення
memcached
вже доступне у ServBay.)Маршрут для Memcached
php<?php // ukrainian: Додаємо маршрут для Memcached
1
2Метод контролера
Додайте метод
memcachedAction
у контролер:php<?php // ukrainian: Метод роботи з Memcached // Створення кешу, отримання даних та маркування CACHE MISS/HIT
1
2
3Шаблон перегляду
module/Application/view/application/index/memcached.phtml
:php<h1>Memcached Example</h1> <p><?php echo $this->message; ?></p>
1
2Тест
Перейдіть на
https://servbay-zend-test.local/memcached
.
Інтеграція Redis
Аналогічно Memcached, але для Redis.
Встановити адаптер Redis
У
composer.json
додайте:json// require: "laminas/laminas-cache-storage-adapter-redis": "^2.0", "ext-redis": "*"
1Виконайте:
bashcomposer update
1(расширення
redis
вже доступне у ServBay.)Маршрут для Redis
php<?php // ukrainian: Додаємо маршрут для Redis
1
2Метод контролера
Додайте метод
redisAction
:php<?php // ukrainian: Метод роботи з Redis // Створення кешу, отримання даних та маркування CACHE MISS/HIT
1
2
3Шаблон перегляду
module/Application/view/application/index/redis.phtml
:php<h1>Redis Example</h1> <p><?php echo $this->message; ?></p>
1
2Тест
Перейдіть на
https://servbay-zend-test.local/redis
.
Висновок
Виконавши ці кроки, ви створили, налаштували та запустили Zend Framework (Laminas) проєкт у ServBay. Ви навчилися конфігурувати сайт, налаштовувати веб-сервер для роботи з публічною папкою, інтегрувати та використовувати MySQL, PostgreSQL, Memcached і Redis.
ServBay спрощує розгортання локального середовища розробки, даючи змогу зосередитись на коді й швидко тестувати зміни у проєкті. Завдяки багатому набору пакетів і гнучкій конфігурації, ServBay дозволяє моделювати реальні середовища і значно підвищити вашу продуктивність.