Створення та запуск проекту PHPixie на macOS з ServBay
PHPixie — це легкий і високопродуктивний PHP фреймворк, створений для швидкої розробки веб-додатків. Він реалізує патерн HMVC (Hierarchical Model-View-Controller), забезпечує лаконічну структуру коду та ефективну обробку запитів. Завдяки простоті, гнучкості та продуктивності, PHPixie отримав визнання серед багатьох розробників.
Основні особливості та переваги PHPixie
- Легкість: Ядро PHPixie надзвичайно компактне, містить лише необхідні для розробки компоненти та забезпечує швидкий старт і виконання.
- Висока продуктивність: Фреймворк оптимізований для ефективної роботи з паралельними запитами, підходить для проектів з високими вимогами до швидкодії.
- Простота у навчанні: Чистий і зрозумілий API та детальна документація дають змогу швидко розібратися з фреймворком.
- Гнучкість: Слабке зв’язування компонентів дозволяє інтегрувати сторонні бібліотеки та модулі відповідно до потреб проекту.
- Активна спільнота: Є активна спільнота, яка створює розширення та надає технічну підтримку.
PHPixie допомагає створювати ефективні та якісні веб-додатки, підходить як для невеликих, так і для масштабних корпоративних проектів.
Створення та запуск проекту PHPixie з ServBay
Ця стаття допоможе налаштувати та запустити проект PHPixie у локальному середовищі розробки, що надається ServBay. Ми скористаємось інтегрованим PHP оточенням, менеджером залежностей Composer та функціоналом «Вебсайти» для налаштування веб-сервера. Крок за кроком Ви зможете отримати локальний доступ до проекту та інтегрувати бази даних/кеш.
Необхідні умови
- ServBay має бути встановлений і запущений на macOS. ServBay вже містить PHP, Composer, різні бази даних (MySQL, PostgreSQL, MongoDB, Redis тощо) та Caddy Web Server.
- Базове знання командного рядка.
Створення проекту PHPixie
Рекомендована директорія для сайтів
ServBay рекомендує зберігати всі локальні проекти у директорії /Applications/ServBay/www для зручності керування та контролю доступу.
- Переконайтеся, що Composer встановлений: Composer вже інтегрований у ServBay, додаткової установки не потрібно. Для перевірки відкрийте термінал і введіть
composer --version. - Створіть директорію проекту: У корені рекомендованої директорії створіть каталог для Вашого проекту PHPixie та перейдіть в нього:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app1
2
3 - Створення проекту за допомогою 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, щоб не було прямого доступу до конфігураційних чи інших приватних файлів проєкту.- Назва: наприклад,
Збережіть налаштування. ServBay автоматично оновить конфігурацію Caddy та (якщо потрібно) виправить Ваш локальний hosts-файл, щоб
servbay-phpixie-test.localвказував на локальний сервер ServBay.
Для детального опису дивіться Додавання першого сайту.
Додавання прикладного коду
Щоб перевірити коректність роботи проекту і проілюструвати інтеграцію баз даних та кешу, додайте наступний тестовий код.
Створіть прикладний контролер: Додайте нижчеподаний код у файл
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 = $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 = $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, особливо домен, тип та кореневу директорію.
- Чи правильно налаштований ваш локальний hosts-файл (
servbay-phpixie-test.localмає вказувати на локальний сервер; ServBay зазвичай робить це автоматично). - Чи обрана і активована потрібна версія PHP у ServBay.
Приклади інтеграції баз даних та кешу
PHPixie містить підтримку багатьох баз даних та систем кешування. ServBay постачається з MySQL, PostgreSQL, Redis, Memcached, тому їх легко інтегрувати у проект.
Важливо: Перед виконанням операцій із базою даних переконайтесь, що відповідні сервіси (наприклад, MySQL або PostgreSQL) запущено у ServBay, і створена база даних для проекту. В нашому прикладі використовуємо базу 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', // Стандартний пароль ServBay (коригуйте згідно з налаштуваннями)
'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', // Стандартний пароль ServBay (коригуйте згідно з налаштуваннями)
'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 підтримує міграції — командний спосіб версіонування структури бази даних.
- Відкрийте термінал: Перейдіть у корінь проекту PHPixie:bash
cd /Applications/ServBay/www/servbay-phpixie-app1 - Створіть міграцію: Запустіть CLI-функцію PHPixie для створення нового файлу міграції (для таблиці
users):bashМіграція буде створена у директоріїphp pixie generate:migration create_users_table1assets/migrations(іменування з датою та часом). - Відредагуйте міграцію: Відкрийте файл (наприклад,
YYYY_MM_DD_HHMMSS_create_users_table.php) і допишіть методиup()іdown()для створення та видалення таблиціusers: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(); // Колонки created_at і updated_at }); } 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 - Запустіть міграцію: Виконайте команду для створення таблиці
users:bashУ випадку успіху отримаєте підтвердження у терміналі. Перевірте наявність таблиці у базі через будь-який менеджер баз даних.php pixie migrate1
Використання реляційних баз даних (MySQL/PostgreSQL)
У прикладі контролера (src/App/HTTP/Controller/Home.php) вже реалізовано методи action_add_user і action_list_users для ілюстрації роботи з базою даних через компонент PHPixie.
- Додавання користувача: Перейдіть на
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):
Створіть/відредагуйте assets/config/cache.php:
php
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // Стандартна адреса Memcached у ServBay
'port' => 11211, // Стандартний порт
'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):
Створіть/відредагуйте assets/config/redis.php:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Стандартна адреса Redis у ServBay
'port' => 6379, // Стандартний порт
'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 чи Redis завдяки налаштуванням).
- Тест Memcached: Перейдіть на
https://servbay-phpixie-test.local/home/memcachedдля запису і читання ключа з Memcached. - Тест Redis: Перейдіть на
https://servbay-phpixie-test.local/home/redisдля роботи з Redis.
Переконайтесь, що сервіси Memcached і Redis запущені у ServBay.
Висновок
У результаті згідно з інструкцією, Ви створили, налаштували й запустили проект PHPixie у локальному середовищі на macOS з ServBay. Ви навчилися створювати проект через Composer, налаштовувати веб-сервер, інтегрувати базу даних та кеш і перевіряти роботу функцій.
Інтегроване оточення ServBay спрощує налаштування PHP-середовища, дозволяючи зосередитися на розробці функціоналу додатків. Цей гайд допоможе швидше стартувати з PHPixie і розробити Ваш наступний веб-проект!
