Створення та запуск проекту FuelPHP у локальному середовищі ServBay
Що таке FuelPHP?
FuelPHP — це гнучкий та модульний PHP фреймворк, розроблений для сучасних веб-додатків. Він підтримує ієрархічну модель MVC (HMVC — Hierarchical Model-View-Controller), пропонує багатий набір функцій та інструментів для розробників для швидкої й ефективної побудови якісних веб-рішень. Завдяки високій гнучкості, продуктивності та легкій масштабованості FuelPHP обирають багато професійних PHP-розробників.
Основні переваги та функції FuelPHP
- HMVC-архітектура: Ієрархічна модель MVC допомагає структурувати код, полегшує його повторне використання та модульний підхід — особливо актуально для великих чи складних проектів.
- Висока продуктивність: FuelPHP оптимізований для швидкої роботи і ефективного використання ресурсів, тому чудово справляється з високим навантаженням та паралельними запитами.
- Масштабованість: Можна легко інтегрувати сторонні бібліотеки чи додавати власні кастомні функції відповідно до потреб проекту.
- Безпека: Вбудовані механізми захисту — автоматична валідація вводу, фільтрація виходу (захист від XSS), CSRF-захист, профілактика SQL-ін'єкцій тощо — дозволяють створювати більш захищені додатки.
- Потужна спільнота: Активна спільнота розробників FuelPHP завжди готова допомогти та пропонує розмаїття додаткових ресурсів.
Завдяки цим функціям FuelPHP дозволяє створювати безпечні, продуктивні та легкі у підтримці веб-додатки — як для малих проектів, так і для масштабних корпоративних систем.
Налаштування середовища розробки FuelPHP з ServBay
ServBay — це спеціалізоване локальне середовище для веб-розробників, в якому заздалегідь встановлені PHP, Caddy/Nginx/Apache, MySQL/PostgreSQL/MongoDB, Redis та інші необхідні сервіси й інструменти. Завдяки цьому створити робоче середовище для проекту FuelPHP дуже легко — немає потреби вручну встановлювати чи налаштовувати залежності.
У цьому гайді детально розглядається створення та запуск FuelPHP проекту з використанням PHP-оточення від ServBay, веб-сервера (Caddy), бази даних і кешуючих сервісів. Функціональність Сайт ServBay дозволяє швидко налаштувати веб-сервер та забезпечити доступ і тестування вашого проекту у декілька простих кроків.
Необхідні умови
Перед початком роботи переконайтеся, що ви виконали такі кроки:
- ServBay успішно встановлено і працює на macOS.
- PHP-оточення у ServBay вже активовано (за замовчуванням).
- База даних (наприклад, MySQL) і кеш-сервіси (наприклад, Redis, Memcached) у ServBay запущені і працюють коректно.
- Composer вже інтегровано у ServBay — додатково встановлювати не потрібно.
Створення проекту FuelPHP
Рекомендована папка для проекту
ServBay радить розміщувати всі сайти у каталозі /Applications/ServBay/www, що спрощує керування й налаштування. Для прикладу в цьому гайді використовується саме ця директорія.
Перехід до кореневої папки сайту
Відкрийте Термінал і перейдіть до рекомендованої директорії:
bashcd /Applications/ServBay/www1Створіть директорію проекту
Створіть нову папку для FuelPHP проекту та перейдіть у неї:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app1
2Ініціалізуйте проект FuelPHP через Composer
Використайте Composer для завантаження та ініціалізації FuelPHP у поточній директорії (
.):bashcomposer create-project fuel/fuel .1Composer автоматично завантажить фреймворк FuelPHP та необхідні залежності в папку
servbay-fuelphp-app.
Налаштування веб-сервера (через функцію Сайт у ServBay)
Щоб отримати доступ до проекту FuelPHP через браузер, треба налаштувати для нього віртуальний хост через функцію Сайт ServBay.
- Відкрийте головне вікно ServBay.
- Виберіть меню Сайти у лівій панелі.
- Натисніть кнопку Додати сайт у правому верхньому куті.
- У формі налаштування вкажіть такі параметри:
- Ім'я: Дайте сайту зрозумілу назву, наприклад
My First FuelPHP Dev Site. - Домен: Задайте домен для локальної розробки, наприклад
servbay-fuelphp-test.local(ServBay автоматично прив'яже цей домен до localhost). - Тип сайту: Виберіть
PHP. - Версія PHP: Виберіть потрібну версію, наприклад
8.3. - Корінь сайту: Вкажіть директорію, в якій знаходиться точка входу FuelPHP (
public/index.php). Тобто вкажіть підкаталогpublic:/Applications/ServBay/www/servbay-fuelphp-app/public.
- Ім'я: Дайте сайту зрозумілу назву, наприклад
- Натисніть Додати для збереження.
ServBay автоматично оновить конфігурацію Caddy і переспрямує новий домен.
Для докладної інструкції дивіться розділ Додавання першого сайту у документації ServBay.
Налаштування сервісів для проекту FuelPHP
FuelPHP проект потребує конфігурації для підключення до бази даних та кеш-сервісів.
Налаштування бази даних
Конфігураційний файл для бази даних знаходиться у fuel/app/config/development/db.php. Відредагуйте його для налаштування підключення. Наприклад, якщо ви використовуєте MySQL за замовчуванням у ServBay:
php
<?php
/**
* Налаштування БД для середовища розробки. Об'єднуються з глобальними налаштуваннями.
*/
return [
'default' => [
'connection' => [
'dsn' => 'mysql:host=localhost;dbname=fuel_dev', // переконайтеся, що база fuel_dev створена
'username' => 'root', // стандартний користувач MySQL у ServBay
'password' => 'root', // стандартний пароль MySQL ServBay (лише для локальної розробки!)
],
'identifier' => '`', // MySQL використовує бектики для ідентифікаторів
],
];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
Зверніть увагу:
- Ручне створення бази
fuel_devчерез phpMyAdmin чи Adminer — обов'язкове. Ім'я користувача та парольrootпризначено лише для локального використання. - Параметр
'identifier' => ''` потрібний для коректного роботи з MySQL.
Налаштування кешу (Memcached та Redis)
FuelPHP підтримує різні типи кешування. Конфігурація кешу знаходиться у файлі fuel/app/config/cache.php, а Redis — додатково у fuel/app/config/redis.php. Переконайтеся, що служби Memcached та/або Redis запущені у ServBay.
Налаштування Memcached (fuel/app/config/cache.php):
Щоб використовувати Memcached як основний драйвер кешу:
php
<?php
return [
'driver' => 'memcached', // обираємо memcached драйвер
'memcached' => [
'cache_id' => 'fuel', // ідентифікатор кешу
'servers' => [
'default' => [
'host' => '127.0.0.1', // стандартна адреса
'port' => 11211, // стандартний порт
'weight' => 100,
],
],
'compression' => false, // ввімкнути/вимкнути стиснення
],
// ... інші налаштування драйверів кешу
];1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PHP у ServBay зазвичай має вбудований Memcached-розширення.
Налаштування Redis (fuel/app/config/redis.php):
Для використання Redis налаштуйте підключення окремо:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // стандартна адреса
'port' => 6379, // стандартний порт
'database' => 0, // індекс бази даних Redis
],
// можна додати кілька підключень
];1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
PHP у ServBay також підтримує Redis-розширення.
Приклади використання бази даних та кешу
Для демонстрації інтеграції FuelPHP з базою даних та кеш-сервісами додамо прості приклади коду.
Створення таблиці у базі даних (через міграції FuelPHP)
FuelPHP містить інструмент Oil для керування міграціями — версіями структури бази даних.
Створіть файл міграції
У кореневій папці проекту (
servbay-fuelphp-app) створіть новий файл міграції для таблиціusers:bashphp oil generate migration create_users_table1Ця команда створить файл у папці
fuel/app/migrationsіз зазначенням часу.Відредагуйте файл міграції
Відкрийте файл (
fuel/app/migrations/xxxxxxxxxxxx_create_users_table.php) і пропишіть структуру таблиці у методіup(), а методdown()— для видалення:php<?php namespace Fuel\Migrations; use Fuel\Core\DBUtil; class Create_users_table { public function up() { // створення таблиці users DBUtil::create_table('users', [ 'id' => ['type' => 'int', 'constraint' => 11, 'auto_increment' => true], 'name' => ['type' => 'varchar', 'constraint' => 100], 'email' => ['type' => 'varchar', 'constraint' => 100, 'unique' => true], ], ['id'], true, 'InnoDB', 'utf8mb4_unicode_ci'); // первинний ключ, індекс, тип сховища та кодування } public function down() { // видалити таблицю users (відкат) DBUtil::drop_table('users'); } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23Виконайте міграцію
Запустіть міграцію у кореневій папці:
bashphp oil refine migrate1Таблиця
usersбуде створена у базіfuel_dev.
Додавання прикладів контролерів
Відкрийте fuel/app/classes/controller/welcome.php та додайте методи для демонстрації роботи з базою та кешем:
php
<?php
use Fuel\Core\Controller;
use Fuel\Core\Response;
use Fuel\Core\Cache;
use Fuel\Core\DB; // підключаємо фасад DB
use Fuel\Core\Redis; // підключаємо фасад Redis
class Controller_Welcome extends Controller
{
// Головна сторінка
public function action_index()
{
return Response::forge('Hello ServBay!');
}
// Демо функція для Memcached
public function action_memcached()
{
// спробувати отримати значення з кешу
$value = Cache::get('servbay_memcached_key');
if ($value === false) {
// якщо кеш порожній — встановити значення
$value = 'Hello Memcached from ServBay!';
Cache::set('servbay_memcached_key', $value, 60); // кеш на 60 секунд
$value .= ' (from cache)';
} else {
$value .= ' (cached)';
}
return Response::forge($value);
}
// Демо функція для Redis
public function action_redis()
{
// отримати екземпляр Redis (стандартне підключення)
$redis = \Redis_Db::instance(); // для FuelPHP 1.x
// якщо налаштовано кілька підключень: \Redis_Db::instance('connection_name')
// записати значення у Redis
$redis->set('servbay_redis_key', 'Hello Redis from ServBay!');
// отримати значення з Redis
$value = $redis->get('servbay_redis_key');
return Response::forge($value);
}
// Додавання запису у MySQL
public function action_mysql_add()
{
try {
// додати запис у таблицю users
$result = DB::insert('users')->set([
'name' => 'ServBay Demo User ' . time(), // унікальність через час
'email' => 'demo_user_' . time() . '@servbay.test',
])->execute(); // повертає ID нового запису
return Response::forge('User added with ID: ' . $result[0]);
} catch (\Database_Exception $e) {
// обробка помилок (наприклад, дубль email)
return Response::forge('Error adding user: ' . $e->getMessage(), 500);
}
}
// Виведення списку користувачів з MySQL
public function action_mysql()
{
// вибрати всі записи з users
$users = DB::select('id', 'name', 'email')->from('users')->execute()->as_array();
// повернути список як JSON
return Response::forge(json_encode($users, JSON_PRETTY_PRINT));
}
}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
68
69
70
71
72
73
74
75
76
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
68
69
70
71
72
73
74
75
76
Зверніть увагу:
- Для роботи з базою та Redis використовуються фасади
DBіRedis. - Ключі кешу мають префікс
servbay_для унікальності. - Додавання у MySQL та обробка помилок використовує реалістичний підхід.
- Для FuelPHP 1.x виклик Redis здійснюється через
\Redis_Db::instance().
Налаштування роутінгу
Щоб звертатися до нових методів контролера за URL, додайте маршрути у fuel/app/config/routes.php:
php
<?php
return array(
'_root_' => 'welcome/index', // Головний роут перенаправляє на index контролера welcome
'_404_' => 'welcome/404', // Стандартна сторінка 404
// Нові демо-екшени
'memcached' => 'welcome/memcached',
'redis' => 'welcome/redis',
'mysql_add' => 'welcome/mysql_add',
'mysql' => 'welcome/mysql',
// ... інші маршрути
);1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
Тестування та доступ до сайту
Тепер можна протестувати інтеграцію FuelPHP з сервісами через браузер, використовуючи домен https://servbay-fuelphp-test.local, налаштований у ServBay.
- Головна сторінка:
https://servbay-fuelphp-test.local- Очікуваний результат:
Hello ServBay!
- Очікуваний результат:
- Тестування Memcached:
https://servbay-fuelphp-test.local/memcached- Перший раз:
Hello Memcached from ServBay! (from cache) - Далі:
Hello Memcached from ServBay! (cached)
- Перший раз:
- Тестування Redis:
https://servbay-fuelphp-test.local/redis- Очікуваний результат:
Hello Redis from ServBay!
- Очікуваний результат:
- Додавання користувача:
https://servbay-fuelphp-test.local/mysql_add- Очікуваний результат:
User added with ID: [ID]
- Очікуваний результат:
- Список користувачів:
https://servbay-fuelphp-test.local/mysql- Очікуваний результат: JSON-масив всіх users
Щодо HTTPS: ServBay автоматично створює SSL-сертифікати для локальних сайтів та керує CA (ServBay User CA чи ServBay Public CA). В разі попередження браузера — додайте CA ServBay у довірені сертифікати вашої системи.
Важливі зауваження
- Переконайтеся, що у головному вікні ServBay всі потрібні сервіси (PHP, Caddy/Nginx/Apache, MySQL, Redis, Memcached) запущені.
- Створіть базу
fuel_devвручну у своєму менеджері БД (phpMyAdmin чи Adminer), або змініть ім'я уdb.phpна вже створену БД. Міграції FuelPHP створюють таблиці у вказаній базі, але не створюють нові бази. - Точка входу FuelPHP — це файл
public/index.php, тому у параметрах Сайт обов'язково вказуйте директорію самеpublic.
Підсумок
ServBay дозволяє швидко та зручно налаштувати повноцінне локальне середовище розробки FuelPHP на macOS. У цьому гайді описано створення проекту, налаштування сайту, підключення до бази даних та кешу, а також приклади інтеграції з цими сервісами через код. Завдяки готовим сервісам та простій конфігурації розробка стає ще ефективнішою.
Бажаємо успіху у вашому FuelPHP-проекті на ServBay!
