Створення та запуск проєкту FuelPHP у локальному середовищі ServBay
Що таке FuelPHP?
FuelPHP — це гнучкий модульний PHP-фреймворк, спеціально розроблений для створення сучасних веб-додатків. Він дотримується архітектурної моделі ієрархічний Model-View-Controller (HMVC), пропонуючи потужний набір функцій та інструментів, які допомагають розробникам швидко та ефективно створювати високоякісні веб-сервіси. Завдяки винятковій гнучкості, високій продуктивності та легкій розширюваності, FuelPHP став першим вибором для багатьох PHP-розробників.
Основні особливості та переваги FuelPHP
- HMVC-архітектура: підтримує ієрархічну модель MVC, що сприяє кращій організації, повторному використанню та модульній розробці коду, особливо у великих чи складних проєктах.
- Висока продуктивність: FuelPHP орієнтований на оптимізацію швидкості та ефективного використання ресурсів, дозволяє легко масштабувати web-додатки та обробляти численні запити одночасно.
- Легка розширюваність: за рахунок сильної механіки розширень, розробник може інтегрувати сторонні бібліотеки або власні рішення під конкретні задачі проєкту.
- Безпека: фреймворк містить вбудовані механізми авто-валідaції вводу, фільтрацію вихідних даних (захист від XSS), CSRF-захист, запобігання SQL-ін'єкціям тощо, що дозволяє писати безпечні додатки.
- Потужна спільнота: довкола FuelPHP сформувалася активна спільнота розробників, завдяки якій можна швидко отримувати допомогу та використовувати численні сторонні ресурси.
Завдяки цим властивостям FuelPHP дозволяє швидко створювати продуктивні, безпечні та легкі у підтримці веб-додатки будь-якого масштабу — від невеликих стартапів до корпоративних рішень.
Розгортання середовища розробки FuelPHP з ServBay
ServBay — це локальне середовище веб-розробки, наперед вкомплектоване PHP, Caddy/Nginx/Apache, MySQL/PostgreSQL/MongoDB, Redis та іншими необхідними інструментами. Використовуючи ServBay, ви легко підготуєте платформу для проєкту FuelPHP без ручного встановлення та складної конфігурації залежностей.
У цьому посібнику показано, як налаштувати потрібне оточення для FuelPHP, використовуючи PHP, вебсервер (Caddy), базу даних і сервіси кешування, що постачаються в ServBay. Ми скористаємося функцією Сайт у ServBay для конфігурації вебсервера та швидкого тестування проєкту.
Передумови
Перед початком переконайтеся, що:
- Ви вже встановили і запустили ServBay на macOS.
- PHP-оточення у ServBay увімкнене (стандартно активне).
- Всі сервіси для баз даних (наприклад, MySQL) і кешування (Redis, Memcached), які плануєте використовувати, запущені і працюють у ServBay.
- Composer йде у комплекті з ServBay — додатково встановлювати не потрібно.
Створення проєкту FuelPHP
Рекомендований каталог для зберігання проєктів
ServBay радить розміщувати всі веб-проєкти у каталозі /Applications/ServBay/www
для полегшення менеджменту та конфігурації. Ми будемо використовувати цю теку у всіх прикладах.
Перейдіть до кореневого каталогу сайтів
Відкрийте програму Terminal і перейдіть у рекомендований каталог:
bashcd /Applications/ServBay/www
1Створіть директорію для нового проєкту
Створіть унікальну теку під ваш проєкт FuelPHP та перейдіть до неї:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app
1
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 автоматично пропише локальну маршрутизацію. - Тип сайту: оберіть
PHP
. - Версія PHP: наприклад,
8.3
. - Коренева директорія сайту: має вказувати на публічний каталог проєкту FuelPHP:
/Applications/ServBay/www/servbay-fuelphp-app/public
.
- Назва: будь-яке зрозуміле ім’я, наприклад
- Натисніть Додати для збереження.
Після цього ServBay автоматично оновить конфігурацію Caddy і перезапустить потрібні служби.
Детальніше про додавання сайту у ServBay дивіться у Додавання першого сайту.
Налаштування підключення до сервісів у FuelPHP
Один із перших кроків – прописати параметри підключення до бази даних, кешу тощо для вашого проєкту 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', // Типовий пароль (тільки для локальної розробки!)
],
'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 чи інший інструмент керування БД у ServBay. Типові облікові дані —root
/root
(тільки для локалки!). 'identifier' => '
'` обов’язковий для MySQL, щоб імена таблиць та полів були вірно обгорнуті.
Налаштування кешу (Memcached і Redis)
FuelPHP підтримує різні драйвери кешування. Для налаштування відкрийте fuel/app/config/cache.php
та визначте потрібний драйвер і спосіб підключення. Memcached і Redis мають бути запущені у ServBay.
Приклад налаштування Memcached (fuel/app/config/cache.php
):
php
<?php
return [
'driver' => 'memcached', // Використовувати Memcached за замовчуванням
'memcached' => [
'cache_id' => 'fuel', // ID кешу
'servers' => [
'default' => [
'host' => '127.0.0.1', // Стандартна адреса Memcached
'port' => 11211, // Стандартний порт Memcached
'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
):
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Стандартна адреса Redis
'port' => 6379, // Стандартний порт Redis
'database' => 0, // Індекс БД Redis
],
// Можна прописати кілька підключень Redis
];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Redis-розширення для PHP у ServBay теж зазвичай встановлено з коробки.
Приклади взаємодії з базою даних та кешем
Для демонстрації інтеграції FuelPHP із БД й кешем додаємо приклади коду.
Підготовка таблиці у БД (FuelPHP Migrations)
FuelPHP містить консольний інструмент Oil для роботи з міграціями — керування структурою бази даних.
Створіть файл міграції
У корені проєкту (
servbay-fuelphp-app
) створіть нову міграцію для таблиціusers
:bashphp oil generate migration create_users_table
1Міграцію буде додано до каталогу
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Запустіть міграцію
У корені проєкту (
servbay-fuelphp-app
) виконайте команду міграції:bashphp oil refine migrate
1Якщо все вірно — у БД
fuel_dev
буде створена таблицяusers
.
Додаємо приклад контролера
Відредагуйте файл 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 facade
use Fuel\Core\Redis; // Підключення Redis facade
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()
// або вказати інше підключення через \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(), // Унікальність через timestamp
'email' => 'demo_user_' . time() . '@servbay.test',
])->execute(); // execute() повертає масив з ідентифікатором
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 = 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
Примітки:
- Підключені фасади DB та Redis (
use Fuel\Core\DB;
,use Fuel\Core\Redis;
). - Префікс
servbay_
у ключах Memcached та Redis для уникнення конфліктів. - У методі додавання в MySQL додані timestamp в ім’я і email для унікальності, а також базова обробка помилок.
- Для FuelPHP 1.x Redis використовується через
\Redis_Db::instance()
.
Налаштування маршрутів (routes)
Щоб звернутися до нових екшенів controller'а через URL, додайте маршрути у fuel/app/config/routes.php
. Для екшенів memcached
, redis
, mysql_add
, mysql
потрібно прописати маршрути явно.
Вміст файлу fuel/app/config/routes.php
може виглядати так:
php
<?php
return array(
'_root_' => 'welcome/index', // Головна сторінка
'_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
.
- Головна сторінка:
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!
- Очікувано:
- Додавання користувача в MySQL:
https://servbay-fuelphp-test.local/mysql_add
- Очікувано:
User added with ID: [ID]
- Очікувано:
- Перегляд списку користувачів MySQL:
https://servbay-fuelphp-test.local/mysql
- Очікувано: масив JSON із записами з таблиці
users
- Очікувано: масив JSON із записами з таблиці
Щодо HTTPS: ServBay автоматично створює SSL-сертифікати для локальних сайтів. Якщо браузер не довіряє сертифікату, переконайтеся, що довірений CA ServBay імпортовано у вашу ОС.
Зверніть увагу
- Переконайтеся, що у головному вікні ServBay увімкнені потрібні версії PHP, Caddy (або Nginx/Apache), MySQL, Redis, Memcached — всі мусить бути у статусі Працює.
- Створіть базу даних
fuel_dev
у менеджері БД ServBay самостійно (або використовуйте іншу, прописавши відповідно уdb.php
). Міграції FuelPHP (oil refine migrate
) створюють таблиці, але не створюють саму БД. - Пам’ятайте, що головна точка входу у FuelPHP — це файл
public/index.php
, тому при додаванні сайту в ServBay укажіть коренем проєкту саме підкаталогpublic
.
Підсумок
Завдяки ServBay ви надзвичайно швидко можете згорнути повнофункціональне локальне середовище для FuelPHP-проєктів на macOS. У цьому посібнику ми розглянули створення проєкту, налаштування функції Сайт у ServBay, підключення до баз даних і кеш-сервісів, а також перевірили працездатність через демонстраційний код. Наперед встановлені сервіси у ServBay та спрощені кроки конфігурації значно збільшують вашу продуктивність.
Бажаємо успіхів із FuelPHP у ServBay!