Створення та запуск проекту PHPixie на macOS із ServBay
PHPixie — легкий і високопродуктивний PHP фреймворк, створений для швидкої розробки веб-додатків. Він заснований на патерні HMVC (Hierarchical Model-View-Controller), забезпечує чисту структуру коду і ефективність. Завдяки простоті, гнучкості та продуктивності PHPixie вибирають багато розробників.
Основні можливості та переваги PHPixie
- Легкість: Ядро PHPixie дуже компактне, містить лише необхідні для старту компоненти, забезпечуючи швидкий запуск.
- Висока продуктивність: Фокус на ефективності дозволяє обробляти великий потік запитів — оптимально для задач з високими вимогами до швидкості.
- Простота у вивченні: Зрозумілий API й детальна документація дають змогу швидко освоїти фреймворк навіть новачкам.
- Гнучкість: Компоненти фреймворку слабо пов’язані між собою, що дозволяє легко інтегрувати сторонні бібліотеки згідно з потребами проекту.
- Активна спільнота: Розвинене ком’юніті користувачів — велика база сторонніх розширень, підтримка та ресурси.
PHPixie допомагає швидко та якісно будувати веб-застосунки будь-яких масштабів — від невеликих сайтів до корпоративних рішень.
Створення та запуск проекту PHPixie з ServBay
Даний посібник покаже, як скористатися локальним середовищем розробки ServBay для запуску проекту PHPixie. Ми використовуватимемо інтегроване PHP-середовище, менеджер залежностей Composer, а також функцію “Веб-сайти” для налаштування вебсерверу та організації доступу до проекту і баз даних/кешу.
Необхідні умови
- ServBay вже встановлений та працює на macOS. ServBay містить PHP, Composer, бази даних (MySQL, PostgreSQL, MongoDB, Redis тощо) і вебсервер Caddy.
- Базові знання роботи з командним рядком.
Створення проекту PHPixie
Рекомендований каталог для проектів
ServBay рекомендує розміщувати всі ваші локальні веб-проекти у каталозі /Applications/ServBay/www
для спрощення керування і контролю доступу.
- Переконайтесь, що Composer встановлено: Composer вже вбудовано у ServBay. Додаткове встановлення не потрібне. У терміналі введіть
composer --version
для перевірки. - Створіть каталог проекту: У рекомендованому каталозі створіть папку під ваш проект і перейдіть у неї:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - Створіть проект PHPixie через Composer: У папці проекту виконайте команду для встановлення шаблону PHPixie:bashComposer завантажить PHPixie і всі залежності у поточний каталог.
composer create-project phpixie/project .
1
Налаштування веб-сервера
Використайте функцію Веб-сайти у ServBay для налаштування сервера Caddy — він буде обслуговувати ваш PHPixie-проект.
Відкрийте програму ServBay.
Перейдіть до списку Веб-сайти (Websites).
Натисніть, щоб додати новий сайт.
Заповніть параметри:
- Назва: Наприклад,
My First PHPixie Dev Site
(внутрішня ідентифікація у ServBay). - Домен: Наприклад,
servbay-phpixie-test.local
(цей домен ви будете використовувати у браузері). - Тип сайту: Оберіть
PHP
. - Версія PHP: Виберіть, наприклад,
8.3
. - Кореневий каталог (Document Root): Вкажіть шлях до директорії
web
вашого проекту:/Applications/ServBay/www/servbay-phpixie-app/web
.
Чому саме каталог
/web
?Точка входу проекту PHPixie — це
web/index.php
. Для безпеки коренем веб-сервера має бути саме папкаweb
, а не вся структура проекту. Це захищає від прямого доступу до конфігів, директорії vendor тощо.- Назва: Наприклад,
Збережіть налаштування. ServBay самостійно встановить Caddy і, при необхідності, оновить ваш hosts-файл для призначення домену
servbay-phpixie-test.local
на локальний сервер.
Детальна інструкція — Додавання першого веб-сайту.
Додавання прикладного коду
Для перевірки і демонстрації інтеграції з базами даних і кешем додайте до проекту прикладний код.
Створення контролера для прикладу: Додайте такий код у файл
src/App/HTTP/Controller/Home.php
. Якщо директорії/файли не існують — створіть їх.php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // Імпорт класу Query class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // Дія для головної сторінки public function action_index(Request $request) { // Відображення шаблону assets/templates/app/home.php return $this->template->render('app:home'); } // Дія для тестування Memcached public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached from ServBay!', 60); // Зберегти дані на 60 сек. $value = $cache->get('key'); // Отримати дані return $this->response()->string($value); // Повернути рядок-відповідь } // Дія для тестування Redis public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis from ServBay!'); // Зберегти дані $value = $redis->get('key'); // Отримати дані return $this->response()->string($value); // Повернути рядок-відповідь } // Дія для додавання користувача у MySQL/PostgreSQL public function action_add_user(Request $request) { // Отримати Query builder бази даних $query = $this->components->database()->query(); // Додати нового користувача у таблицю 'users' $query->insert('users')->data([ 'name' => 'ServBay Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // Використати унікальний email ])->execute(); // Виконати вставку return $this->response()->string('User added successfully.'); // Повернути повідомлення про успіх } // Дія для отримання списку користувачів із MySQL/PostgreSQL public function action_list_users(Request $request) { // Отримати Query builder $query = $this->components->database()->query(); // Отримати всі записи з таблиці 'users' $users = $query->select('*')->from('users')->execute()->fetchAll(); // Виконати запит і отримати результат return $this->response()->json($users); // Повернути список користувачів у форматі JSON } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67Створення шаблону для прикладу: Додайте код у файл
assets/templates/app/home.php
. Якщо директорій/файлів немає — створіть їх.php<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Welcome to PHPixie on ServBay</title> <style> body { font-family: sans-serif; line-height: 1.6; margin: 20px; } h1 { color: #333; } p { margin-bottom: 15px; } code { background-color: #f4f4f4; padding: 2px 5px; border-radius: 4px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } li a { text-decoration: none; color: #007bff; } li a:hover { text-decoration: underline; } </style> </head> <body> <h1>Welcome to PHPixie on ServBay</h1> <p>This page is being generated dynamically by your PHPixie application running on ServBay.</p> <h2>Посилання на прикладові функції:</h2> <ul> <li><a href="/home/memcached">Тест Memcached</a></li> <li><a href="/home/redis">Тест Redis</a></li> <li><a href="/home/add_user">Додати користувача у базу</a></li> <li><a href="/home/list_users">Показати користувачів з бази</a></li> </ul> <p>Переконайтесь, що ви виконали попередні кроки з налаштування бази даних та кешу.</p> </body> </html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Доступ до базового сайту
Після налаштування сайту ServBay і додавання прикладового коду ви можете відкрити сайт у браузері:
- Відкрийте браузер та перейдіть на
https://servbay-phpixie-test.local
. - Ви побачите сторінку з написом "Welcome to PHPixie on ServBay" та посилання на демонстраційні функції.
У разі відсутності доступу перевірте:
- Чи запущений ServBay.
- Чи вірно налаштований сайт у ServBay (домен, тип, корінь сайту).
- Чи коректно вказано
servbay-phpixie-test.local
у локальному hosts-файлі (ServBay здебільшого налаштовує його автоматично). - Чи увімкнена потрібна версія PHP у ServBay.
Приклади інтеграції з базами даних та кешем
PHPixie підтримує різні СУБД та системи кешування. ServBay надає пакунки MySQL, PostgreSQL, Redis, Memcached — інтегруються у проект дуже легко.
ВАЖЛИВО: Перед роботою з базою створіть та запустіть відповідну службу у ServBay (наприклад, MySQL або PostgreSQL) та окрему базу для проекту — наприклад, servbay_phpixie_app
. Ви можете скористатись візуальними клієнтами (Sequel Ace, Postico, TablePlus) чи командним рядком. Для ServBay типовий користувач — root
, пароль — password
(уточніть згідно ваших налаштувань).
Налаштування з’єднання з базою даних
Відповідно до типу СУБД (MySQL або PostgreSQL), відкрийте файл assets/config/database.php
у корені проекту. Сервер бази за замовчуванням — 127.0.0.1
.
Приклад конфігурації MySQL (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// connection — змініть під свою СУБД та налаштування ServBay
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // типово у ServBay
'password' => 'password', // типовий пароль (уточнюйте у своїх налаштуваннях)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Приклад конфігурації PostgreSQL (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// connection — змініть під свою СУБД та налаштування ServBay
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // типово у ServBay
'password' => 'password', // типовий пароль (уточнюйте у своїх налаштуваннях)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Створення таблиць (міграції)
PHPixie надає CLI-інструменти для роботи з міграціями — керування версіями структури бази.
- Відкрийте термінал: Перейдіть у корінь проекту PHPixie:bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - Створіть файл міграції: Створіть нову міграцію для таблиці
users
:bashЦе створить новий PHP-файл у папціphp pixie generate:migration create_users_table
1assets/migrations
з унікальною назвою (містить timestamp). - Відредагуйте файл міграції: Відкрийте новий файл міграції (наприклад,
YYYY_MM_DD_HHMMSS_create_users_table.php
) і заповніть методиup()
таdown()
:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // Створити таблицю 'users' за допомогою schema builder $this->schema->create('users', function(Table $table) { $table->increments('id'); // Автоінкрементний ключ $table->string('name'); // Колонка імені $table->string('email')->unique(); // Унікальна email-адреса $table->timestamps(); // Колонки створено/оновлено }); } public function down() { // Видалити таблицю 'users' $this->schema->drop('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 - Виконайте міграцію: Виконайте команду для створення таблиці:bashЯкщо все пройшло вдало — в терміналі з’явиться повідомлення про успіх. За необхідності проконтролюйте наявність таблиці в базі через клієнт або CLI.
php pixie migrate
1
Використання реляційних баз даних (MySQL/PostgreSQL)
У прикладовому контролері src/App/HTTP/Controller/Home.php
вже передбачені методи action_add_user
та action_list_users
для демонстрації взаємодії з MySQL чи PostgreSQL.
- Додавання користувача: Перейдіть за адресою
https://servbay-phpixie-test.local/home/add_user
— у таблиціusers
створиться новий запис. - Список користувачів: Перейдіть за адресою
https://servbay-phpixie-test.local/home/list_users
— отримаєте всі записи із таблиці у JSON.
Налаштування та використання NoSQL (Memcached/Redis)
ServBay вже містить_memcached_ та redis разом із потрібними PHP-розширеннями. Просто додайте відповідну конфігурацію у проекті.
Приклад налаштування Memcached (assets/config/cache.php
):
php
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // Memcached у ServBay
'port' => 11211, // Порт Memcached
'weight' => 100,
],
],
],
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Приклад налаштування Redis (assets/config/redis.php
):
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Redis у ServBay
'port' => 6379, // Порт Redis
'timeout' => 0,
'database' => 0, // Індекс бази Redis
],
];
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Використання Memcached/Redis:
У наведеному вище контролері src/App/HTTP/Controller/Home.php
вже є методи action_memcached
і action_redis
, які демонструють використання кешу через відповідний конфіг.
- Тест Memcached: Відвідайте
https://servbay-phpixie-test.local/home/memcached
— дані запишуться у Memcached і будуть прочитані. - Тест Redis: Відвідайте
https://servbay-phpixie-test.local/home/redis
— аналогічний тест для Redis.
Не забудьте увімкнути відповідні служби у ServBay.
Висновок
Виконавши описані кроки, ви створили, налаштували та запустили проект на PHPixie, користуючись всіма зручностями інтегрованого середовища ServBay на macOS. Ви освоїли підготовку оточення через Composer, налаштування веб-сайту у ServBay, роботу з базами даних і кешем, а також перевірили основний функціонал.
ServBay надзвичайно спрощує процес налаштування PHP-оточення, дозволяючи зосередитися саме на розробці. Сподіваємось, ця інструкція допоможе вам швидко стартувати з PHPixie та створювати нові сучасні веб-проекти!