Создание и запуск проекта 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/www1Создайте каталог проекта
Создайте новую папку для своего проекта на FuelPHP и перейдите в неё:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app1
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
/**
* Настройки базы данных для среды разработки. Эти параметры объединяются с глобальными.
*/
return [
'default' => [
'connection' => [
'dsn' => 'mysql:host=localhost;dbname=fuel_dev', // Убедитесь, что БД fuel_dev существует
'username' => 'root', // Стандартный пользователь MySQL в ServBay
'password' => 'root', // Стандартный пароль MySQL в ServBay (только для локальной разработки!)
],
'identifier' => '`', // Для MySQL необходимо использовать кавычки обратного апострофа
],
];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
return [
'driver' => 'memcached', // Установить memcached как драйвер по умолчанию
'memcached' => [
'cache_id' => 'fuel', // ID кэша
'servers' => [
'default' => [
'host' => '127.0.0.1', // Стандартный адрес Memcached
'port' => 11211, // Стандартный порт Memcached
'weight' => 100,
],
],
'compression' => false, // Использовать ли сжатие
],
// ... другие настройки кэш-драйверов
];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
return [
'default' => [
'hostname' => '127.0.0.1', // Стандартный адрес Redis
'port' => 6379, // Стандартный порт Redis
'database' => 0, // Индекс БД Redis
],
// Можно настроить дополнительные соединения
];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_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Запустите миграцию
В каталоге проекта (
servbay-fuelphp-app) выполните команду для применения миграции:bashphp oil refine migrate1Если всё прошло успешно, соответствующая таблица
usersпоявится в БДfuel_dev.
Добавьте пример кода контроллера
Откройте файл fuel/app/classes/controller/welcome.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));
}
}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
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',
// ... другие маршруты
);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!
