Создание и запуск проекта FuelPHP в локальной среде разработки ServBay
Что такое FuelPHP?
FuelPHP — это гибкий и модульный PHP-фреймворк, предназначенный для создания современных веб-приложений. Он реализует паттерн иерархического MVC (HMVC — Hierarchical Model-View-Controller), предоставляя широкий спектр функций и инструментов, которые помогают разработчикам быстро и эффективно разрабатывать высококачественные веб-решения. Благодаря отличной гибкости, высокой производительности и лёгкому масштабированию FuelPHP остаётся выбором многих PHP-разработчиков.
Основные возможности и преимущества FuelPHP
- Архитектура HMVC: Поддержка иерархического MVC-подхода облегчает структурирование кода, повторное использование и модульную разработку, что особенно полезно для крупных и сложных проектов.
- Высокая производительность: FuelPHP ориентирован на оптимизацию скорости и эффективное использование ресурсов, что позволяет обрабатывать большой объём одновременных запросов.
- Лёгкое расширение: Мощный механизм расширения позволит интегрировать сторонние библиотеки или добавлять собственный функционал под конкретные задачи проекта.
- Безопасность: Встроенные механизмы валидации ввода, фильтрация вывода (защита от XSS), CSRF и предотвращение SQL-инъекций помогают сделать приложения более защищёнными.
- Развитое сообщество: Активное сообщество разработчиков всегда готово помочь — доступны обширные сторонние ресурсы и быстрая поддержка.
Благодаря этим преимуществам FuelPHP позволяет создавать надёжные, быстрые и легко поддерживаемые веб-приложения, подходящие как для небольших сайтов, так и для крупных корпоративных систем.
Настройка среды разработки FuelPHP с использованием ServBay
ServBay — это локальная среда веб-разработки, созданная специально для разработчиков. В сервибе уже предустановлены такие сервисы и инструменты, как PHP, Caddy/Nginx/Apache, MySQL/PostgreSQL/MongoDB, Redis и другие. Используя ServBay, вы легко создадите полноценную среду для проекта FuelPHP без необходимости ручной установки или настройки зависимостей.
В данном руководстве мы подробно рассмотрим, как создать и запустить проект FuelPHP на базе PHP из ServBay, используя веб-сервер (Caddy), а также сервисы для работы с базой данных и кэшированием. Для этого мы воспользуемся функцией сайтов ServBay для настройки веб-сервера и получения быстрого доступа к тестируемому проекту.
Необходимые условия
Перед началом убедитесь, что:
- ServBay установлен и успешно запущен на вашем macOS.
- PHP-окружение в ServBay активно (это стандартное значение по умолчанию).
- Запущены необходимые сервисы базы данных (например, MySQL) и кэширования (например, Redis, Memcached).
- Composer уже предустановлен в ServBay — дополнительная установка не требуется.
Создание проекта FuelPHP
Рекомендуемый путь для хранения проектов
ServBay советует размещать все проекты в каталоге /Applications/ServBay/www
, что упрощает управление и автоматическую настройку. В этом руководстве мы также будем использовать данный путь.
Перейдите в корневой каталог сайтов
Откройте терминал и перейдите в рекомендуемую ServBay папку:
bashcd /Applications/ServBay/www
1Создайте каталог проекта
Создайте новую папку для своего проекта на FuelPHP и перейдите в неё:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app
1
2Создайте проект FuelPHP с помощью Composer
В каталоге проекта выполните команду для загрузки и инициализации FuelPHP через Composer. Точка (
.
) указывает на текущее расположение для создания проекта:bashcomposer create-project fuel/fuel .
1В результате Composer загрузит FuelPHP вместе со всеми зависимостями в директорию
servbay-fuelphp-app
.
Настройка веб-сервера (через функцию сайтов ServBay)
Чтобы получить доступ к вашему проекту FuelPHP из браузера, необходимо настроить для него виртуальный хост через функцию сайта ServBay.
- Откройте основное окно ServBay.
- В левой панели выберите пункт Сайты.
- Нажмите кнопку Добавить сайт в правом верхнем углу.
- В появившемся окне заполните следующие поля:
- Имя: Дайте вашему сайту понятное название, например
My First FuelPHP Dev Site
. - Домен: Укажите локальный домен для разработки, например
servbay-fuelphp-test.local
. ServBay автоматически настроит его на локальную машину. - Тип сайта: Выберите
PHP
. - Версия PHP: Выберите версию PHP для использования, например
8.3
. - Корневая директория сайта: Укажите папку, где расположена точка входа FuelPHP. Главный public-файл FuelPHP — это
public/index.php
, поэтому в качестве корневой укажите папкуpublic
вашего проекта, например:/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', // Стандартный пароль 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
Обратите внимание:
- В сервисе управления базами данных ServBay (например, phpMyAdmin или Adminer) необходимо вручную создать базу данных с именем
fuel_dev
. Пароль и логин по умолчанию в MySQL —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
В PHP-сборках ServBay расширение 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
Обычно Redis-расширение уже в составе PHP от ServBay.
Примеры работы с базой данных и кэшем
Чтобы увидеть, как FuelPHP работает с базой данных и кэш-сервисами, добавим немного демонстрационного кода.
Подготовка таблицы в базе данных (с помощью Migrations FuelPHP)
FuelPHP содержит инструмент Oil для управления миграциями — контролем версий структуры БД.
Создайте файл миграции
В корне проекта (
servbay-fuelphp-app
) создайте миграцию командой Oil для таблицы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Если всё прошло успешно, соответствующая таблица
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()
// если используется несколько соединений — \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(); // 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
(use Fuel\Core\DB;
,use Fuel\Core\Redis;
) для доступа к БД и кэшу. - Префикс
servbay_
в ключах Memcached/Redis помогает исключить конфликт с другими данными. - Пример вставки данных в MySQL содержит метку времени для уникальности и обработку ошибок.
- В FuelPHP 1.x для подключения к Redis используйте
\Redis_Db::instance()
.
Настройка маршрутов (routes)
Чтобы получить доступ к новым действиям из браузера, настройте соответствующие маршруты в fuel/app/config/routes.php
. По умолчанию FuelPHP уже настроен для контроллера Welcome
, но для методов memcached
, redis
, mysql_add
, mysql
их нужно явно прописать.
В файле fuel/app/config/routes.php
обновите или добавьте следующие строки:
php
<?php
return array(
'_root_' => 'welcome/index', // Корневой маршрут по умолчанию — action 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
Проверка работы сайта
Теперь вы можете проверить работоспособность проекта и сервисов, открыв ранее настроенный домен, например: 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!
(если Redis запущен)
- Ожидаемый результат:
- Добавление пользователя в MySQL:
https://servbay-fuelphp-test.local/mysql_add
- Ожидаемый результат:
User added with ID: [ID новой записи]
(если база и таблица созданы, MySQL работает)
- Ожидаемый результат:
- Получение списка пользователей из MySQL:
https://servbay-fuelphp-test.local/mysql
- Ожидаемый результат: JSON-массив всех записей из таблицы
users
(при наличии данных и работающем MySQL)
- Ожидаемый результат: JSON-массив всех записей из таблицы
Про HTTPS: ServBay по умолчанию настраивает SSL-сертификаты для локальных сайтов и использует внутренний ServBay User CA или Public CA. Если браузер сообщает о недоверенном сертификате — установите и доверьте CA-сертификат ServBay в системе.
Важные замечания
- Проверьте, что в главном окне ServBay для вашего проекта выбраны нужные версии PHP, и активны все необходимые сервисы: Caddy (или Nginx/Apache), MySQL, Redis, Memcached и т.д.
- Создайте базу данных
fuel_dev
вручную через встроенное средство управления базами (phpMyAdmin, Adminer и др.) перед выполнением миграций — FuelPHP создаёт только таблицы, а не саму базу. - В качестве точки входа FuelPHP всегда используется файл
public/index.php
, поэтому строго указывайте папкуpublic
в настройках корня сайта ServBay.
Заключение
Используя ServBay, вы легко развернёте полноценную локальную среду для разработки проектов FuelPHP на macOS. Мы рассмотрели создание нового проекта, настройку функции сайта, подключение к базе и кэш-сервисам, а также проверили корректность работы на реальных примерах кода. Упрощённая интеграция сервисов и гибкая настройка ServBay существенно ускоряет процесс разработки.
Желаем успешной работы и продуктивной разработки ваших проектов FuelPHP с помощью ServBay!