Создание и запуск проекта FuelPHP в локальной среде разработки ServBay
Что такое FuelPHP?
FuelPHP — гибкий и модульный PHP-фреймворк, созданный для разработки современных веб-приложений. Он реализует паттерн иерархической модели «Модель-Представление-Контроллер» (HMVC — Hierarchical Model-View-Controller), предоставляя широкий набор функций и инструментов, позволяющих разработчикам быстро и эффективно создавать высококачественные веб-решения. FuelPHP ценится за высокую гибкость, производительность и отличные возможности для расширения, благодаря чему стал популярным выбором среди PHP-разработчиков.
Основные особенности и преимущества FuelPHP
- HMVC-архитектура: поддерживает иерархический архитектурный паттерн MVC, который способствует лучшей организации кода, его переиспользованию и модульной разработке. Особенно актуально для крупных и сложных проектов.
- Высокая производительность: в основе архитектуры — оптимизация скорости и работы с ресурсами, позволяющая эффективно обрабатывать большое количество параллельных запросов.
- Простое расширение: мощная система расширения позволяет легко интегрировать сторонние библиотеки или добавлять кастомные функции под конкретные задачи.
- Безопасность: в составе — автоматизированная валидация входных данных, фильтрация вывода (защита от XSS), CSRF-защита, предотвращение SQL-инъекций и другие инструменты для более безопасной работы.
- Активное сообщество: у FuelPHP развитое комьюнити, где можно оперативно получить помощь и доступ к множеству сторонних ресурсов.
Благодаря этим преимуществам FuelPHP помогает разработчикам создавать высокопроизводительные, безопасные и легко поддерживаемые веб-приложения — от небольших решений до корпоративных проектов.
Использование ServBay для настройки среды разработки FuelPHP
ServBay — локальная среда, специально предназначенная для разработчиков. В ней предустановлены PHP, Caddy/Nginx/Apache, MySQL/PostgreSQL/MongoDB, Redis и многие другие сервисы, необходимые для эффективной работы. С ServBay вам не придется вручную устанавливать и настраивать зависимости — всё готово для запуска проекта FuelPHP.
В этом руководстве подробное объяснение, как использовать возможности ServBay — окружение PHP, веб-сервер (Caddy), базы данных, кеширующие сервисы — для создания и запуска FuelPHP-проекта. Подключение сайта происходит через удобную функцию Веб-сайты, благодаря чему доступ и тестирование проекта максимально просты.
Предварительные условия
Перед началом убедитесь, что выполнены следующие требования:
- ServBay установлен и работает на вашем macOS.
- В ServBay активирована среда PHP (по умолчанию включена).
- Выбранные сервисы баз данных (например, MySQL) и кеша (Redis, Memcached) запущены и функционируют.
- Composer уже встроен в ServBay — отдельная установка не требуется.
Создание проекта FuelPHP
Рекомендованный путь для хранения проектов
ServBay рекомендует размещать веб-проекты в директории /Applications/ServBay/www
. Это облегчает управление и настройку среды. В этом руководстве используется этот путь.
Перейдите в корневую директорию сайтов
Откройте терминал и перейдите в предлагаемый путь:
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
(он будет автоматически привязан к вашему компьютеру). - Тип сайта: выберите
PHP
. - Версия PHP: укажите нужную версию, например,
8.3
. - Корневая папка: укажите директорий с входным файлом FuelPHP, а именно подпапку
public
внутри проекта:/Applications/ServBay/www/servbay-fuelphp-app/public
.
- Название: дайте сайту понятное имя, например,
- Нажмите Добавить для сохранения и применения настроек.
ServBay автоматически обновит конфигурацию Caddy и перезапустит сервис, чтобы новый домен стал доступен.
Подробные шаги — в официальной документации ServBay: Добавление первого сайта.
Настройка подключения к сервисам FuelPHP
Чаще всего проекты FuelPHP требуют подключения к базе данных и кешу.
Настройка базы данных
Файл для конфигурации базы — fuel/app/config/development/db.php
. Отредактируйте его согласно параметрам сервиса. Приведем пример для стандартного MySQL от ServBay:
php
<?php
/**
* Настройки базы данных для development. Мержится с глобальными настройками.
*/
return [
'default' => [
'connection' => [
'dsn' => 'mysql:host=localhost;dbname=fuel_dev', // Убедитесь, что база fuel_dev создана
'username' => 'root', // Стандартный пользователь ServBay MySQL
'password' => 'root', // Стандартный пароль ServBay MySQL (только для локального использования!)
],
'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
):
Вариант конфигурации Memcached по умолчанию:
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
В ServBay PHP обычно заранее установлен модуль для Memcached.
Redis (fuel/app/config/redis.php
):
Для Redis настройте подключения в файле redis.php
:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // стандартный адрес Redis
'port' => 6379, // стандартный порт Redis
'database' => 0, // индекс базы Redis
],
// возможно — несколько соединений
];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
В ServBay PHP обычно уже содержит расширение для Redis.
Пример работы базы данных и кеша
Добавим несколько примеров для демонстрации работы FuelPHP с базой данных и кеширующими сервисами.
Подготовка таблицы базы (через миграции FuelPHP)
В 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'); // Primary key, индексация, настройки движка и кодировки } 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 migrate
1После этого таблица
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 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('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() вернёт массив с 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
Внимание:
- Используются фасады
DB
иRedis
для удобной работы. - Ключи кеша с префиксом
servbay_
для исключения конфликтов. - В MySQL-примере для email используется время — гарантирует уникальность, реализована простая обработка ошибок.
- В FuelPHP 1.x Redis подключается через
\Redis_Db::instance()
.
Настройте роутинг
Для пробного доступа к новым действиям контроллера поменяйте или дополните конфигурацию в 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
Доступ и тестирование сайта
Теперь перейдите в браузер по адресу, настроенному в ServBay — https://servbay-fuelphp-test.local
, чтобы протестировать работу FuelPHP-проекта и подключённых сервисов.
- Домашняя страница:
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!
(если Redis работает)
- Ожидаемый результат:
- Добавление пользователя в MySQL:
https://servbay-fuelphp-test.local/mysql_add
- Ожидаемый результат:
User added with ID: [новый ID]
(если база, таблица и конфиг настроены)
- Ожидаемый результат:
- Вывод пользователей MySQL:
https://servbay-fuelphp-test.local/mysql
- Ожидаемый результат: массив JSON со всеми строками из таблицы users (если данные есть)
Примечание по HTTPS: ServBay автоматически выдаёт SSL-сертификаты и использует ServBay User CA или ServBay Public CA для доверия. Если браузер сообщает об отсутствующем доверии, убедитесь, что сертификат 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, подключение базы и кеша, выполнение проверочного кода. Предустановленные сервисы и простой процесс настройки заметно ускоряют разработку.
Надеемся, что это руководство поможет вам быстро стартовать с FuelPHP в ServBay и сделать работу комфортной!