Создание и запуск проекта PHPixie на macOS с помощью ServBay
PHPixie — это легковесный и высокопроизводительный PHP-фреймворк, разработанный для быстрого создания веб-приложений. Он реализует паттерн HMVC (Hierarchical Model-View-Controller), обеспечивая чистую структуру кода и эффективную обработку запросов. Благодаря простоте, гибкости и скорости, PHPixie пользуется популярностью среди многих разработчиков.
Основные функции и преимущества PHPixie
- Легковесность: Ядро PHPixie содержит только самые необходимые компоненты для разработки приложения, что обеспечивает быстрый запуск.
- Высокая производительность: Архитектура фреймворка рассчитана на обработку множества одновременных запросов, что важно для ресурсоёмких приложений.
- Простота освоения: Ясный и интуитивно понятный API, а также подробная документация позволяют быстро изучить возможности фреймворка.
- Гибкость: Модульная структура с низкой связанностью даёт свободу использовать сторонние библиотеки и компоненты в зависимости от задач проекта.
- Активное сообщество: Вокруг PHPixie сформировалось сообщество, предлагающее множество расширений и поддержки.
PHPixie помогает быстро и эффективно разрабатывать качественные веб-приложения — как для малых проектов, так и для корпоративных решений.
Создание и запуск проекта PHPixie с помощью ServBay
В этом руководстве показано, как использовать локальную среду разработки ServBay для создания и запуска проекта на PHPixie. Вы научитесь использовать встроенную поддержку PHP, Composer, возможности "Сайты" для настройки веб-сервера, а также быстро организуете локальный доступ, интеграцию с базами данных и системами кэширования.
Предварительные условия
- ServBay уже установлен и запущен на вашем macOS. ServBay включает PHP, Composer, различные базы данных (MySQL, PostgreSQL, MongoDB, Redis и пр.), а также веб-сервер Caddy.
- Вы знакомы с базовыми командами терминала.
Создание проекта PHPixie
Рекомендуемый путь размещения сайта
ServBay советует хранить все локальные сайты в каталоге /Applications/ServBay/www
— это облегчает управление и контроль доступа ServBay.
- Проверьте наличие Composer: Composer уже встроен в ServBay — отдельная установка не требуется. Для проверки, откройте терминал и выполните команду
composer --version
. - Создайте каталог проекта: В рекомендуемой директории создайте папку для вашего проекта PHPixie и перейдите в неё:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - Создайте проект PHPixie через Composer: Выполните команду для создания шаблона проекта:bashComposer скачает PHPixie и его зависимости в текущую папку.
composer create-project phpixie/project .
1
Настройка веб-сервера
С помощью раздела Сайты в ServBay настройте веб-сервер Caddy, чтобы он корректно запускал ваш проект PHPixie.
Откройте приложение ServBay.
Перейдите в раздел Websites (Сайты).
Добавьте новый сайт.
Заполните параметры:
- Имя: например,
My First PHPixie Dev Site
(служебное название внутри ServBay). - Домен: например,
servbay-phpixie-test.local
(будущий адрес в браузере). - Тип сайта: выберите
PHP
. - Версия PHP: выберите нужную, например
8.3
. - Корневая папка сайта: укажите папку
web
проекта:/Applications/ServBay/www/servbay-phpixie-app/web
.
Почему используется папка
/web
?Точка входа в проект PHPixie — это файл
web/index.php
. Для безопасности и в соответствии с лучшими практиками, корень сайта должен указывать именно на папкуweb
, чтобы скрыть конфигурационные файлы и содержимое vendor.- Имя: например,
Сохраните настройки. ServBay автоматически настроит Caddy и при необходимости обновит hosts-файл, чтобы домен
servbay-phpixie-test.local
указывал на локальный сервер ServBay.
Подробную инструкцию см. в разделе Добавление первого сайта.
Добавление примерного кода
Чтобы убедиться в работоспособности проекта и показать интеграцию с базами данных и кэшем, добавьте в проект следующий пример.
Создайте пример контроллера: Поместите такой код в файл
src/App/HTTP/Controller/Home.php
. Если каталог или файл не существует — создайте их вручную.php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // Импорт класса Query class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // Стандартное действие для главной страницы public function action_index(Request $request) { // Рендер шаблона assets/templates/app/home.php return $this->template->render('app:home'); } // Пример использования Memcached public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached from ServBay!', 60); // Сохраняем данные на 60 секунд $value = $cache->get('key'); // Получаем значение return $this->response()->string($value); // Возвращаем ответ в виде строки } // Пример использования Redis public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis from ServBay!'); // Сохраняем данные $value = $redis->get('key'); // Получаем значение return $this->response()->string($value); // Возвращаем ответ в виде строки } // Пример добавления пользователя в MySQL/PostgreSQL public function action_add_user(Request $request) { // Получаем построитель запросов из компонента базы данных $query = $this->components->database()->query(); // Вставляем новую запись в таблицу 'users' $query->insert('users')->data([ 'name' => 'ServBay Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // Уникальный email ])->execute(); // Выполняем вставку return $this->response()->string('User added successfully.'); // Ответ об успехе } // Пример получения списка пользователей из MySQL/PostgreSQL public function action_list_users(Request $request) { // Получаем построитель запросов из компонента базы данных $query = $this->components->database()->query(); // Запрашиваем всех пользователей из таблицы 'users' $users = $query->select('*')->from('users')->execute()->fetchAll(); // Получаем все строки return $this->response()->json($users); // Возвращаем список пользователей в формате JSON } }
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Создайте пример шаблона: Добавьте следующий код в файл
assets/templates/app/home.php
. При необходимости создайте нужные каталоги.php<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Welcome to PHPixie on ServBay</title> <style> body { font-family: sans-serif; line-height: 1.6; margin: 20px; } h1 { color: #333; } p { margin-bottom: 15px; } code { background-color: #f4f4f4; padding: 2px 5px; border-radius: 4px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } li a { text-decoration: none; color: #007bff; } li a:hover { text-decoration: underline; } </style> </head> <body> <h1>Welcome to PHPixie on ServBay</h1> <p>This page is being generated dynamically by your PHPixie application running on ServBay.</p> <h2>Ссылки на примерные функции:</h2> <ul> <li><a href="/home/memcached">Тест Memcached</a></li> <li><a href="/home/redis">Тест Redis</a></li> <li><a href="/home/add_user">Добавить пользователя в базу</a></li> <li><a href="/home/list_users">Список пользователей из базы</a></li> </ul> <p>Пожалуйста, убедитесь, что вы завершили соответствующие шаги по настройке базы данных и кэша.</p> </body> </html>
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
Доступ к сайту
После настройки сайта в ServBay и добавления примерного кода вы можете открыть проект в браузере:
- Откройте браузер и перейдите на
https://servbay-phpixie-test.local
. - Вы должны увидеть страницу с надписью "Welcome to PHPixie on ServBay" и ссылками на испытательные функции.
Если страница не открывается, проверьте:
- Запущен ли ServBay.
- Корректна ли конфигурация сайта, в частности домен, тип сайта и папка.
- Верно ли настроен локальный hosts-файл для домена
servbay-phpixie-test.local
(обычно ServBay делает это автоматически). - Включена ли нужная версия PHP в ServBay.
Примеры интеграции с базой данных и кэшем
PHPixie поддерживает работу с разными базами данных и системами кэширования. ServBay предоставляет готовые пакеты MySQL, PostgreSQL, Redis, Memcached, которые легко подключить к проекту.
Важное замечание: Перед работой с БД убедитесь, что соответствующая служба (MySQL или PostgreSQL) запущена в ServBay и создана база данных для проекта (например, servbay_phpixie_app
). Для управления используйте инструменты ServBay (Sequel Ace, Postico, TablePlus и др.) либо командную строку. Обычно имя пользователя по умолчанию: root
, пароль: password
(уточните в своих настройках ServBay).
Настройка подключения к базе данных
В зависимости от выбранной системы (MySQL или PostgreSQL) измените файл assets/config/database.php
на корневом уровне проекта. Обычно адрес базы: 127.0.0.1
.
Пример конфигурации для MySQL (assets/config/database.php
):
<?php
return [
'default' => [
'driver' => 'pdo',
// строка подключения зависит от вашей БД и настроек ServBay
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // Пользователь по умолчанию в ServBay
'password' => 'password', // Пароль по умолчанию (при необходимости измените)
'options' => []
]
];
2
3
4
5
6
7
8
9
10
11
12
Пример конфигурации для PostgreSQL (assets/config/database.php
):
<?php
return [
'default' => [
'driver' => 'pdo',
// строка подключения зависит от вашей БД и настроек ServBay
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // Пользователь по умолчанию в ServBay
'password' => 'password', // Пароль по умолчанию (при необходимости измените)
'options' => []
]
];
2
3
4
5
6
7
8
9
10
11
12
Создание таблицы в базе данных (миграции)
PHPixie оснащён CLI-инструментом для управления миграциями — версионного контроля структуры базы данных.
- Откройте терминал: Перейдите в корневой каталог проекта:bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - Создайте файл миграции: Сгенерируйте миграцию для создания таблицы
users
:bashЭто создаст файл в папкеphp pixie generate:migration create_users_table
1assets/migrations
, имя файла будет содержать временную метку. - Отредактируйте файл миграции: Откройте новый файл (например,
YYYY_MM_DD_HHMMSS_create_users_table.php
) и заполните методыup()
иdown()
следующим образом:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // Создаём таблицу 'users' с помощью schema builder $this->schema->create('users', function(Table $table) { $table->increments('id'); // Автоинкремент. первичный ключ $table->string('name'); // Колонка имени $table->string('email')->unique(); // Email, уникальный $table->timestamps(); // Поля created_at и updated_at }); } public function down() { // Удаляем таблицу 'users' $this->schema->drop('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 - Выполните миграцию: Запустите команду для применения миграции и создания таблицы:bashЕсли операция прошла успешно, в терминале появится сообщение. Также убедитесь через инструмент управления БД, что таблица
php pixie migrate
1users
реально создана.
Использование реляционной базы (MySQL/PostgreSQL)
В контроллере src/App/HTTP/Controller/Home.php
уже реализованы методы action_add_user
и action_list_users
, демонстрирующие добавление и запрос пользователей с помощью компонентов PHPixie.
- Добавление пользователя: Перейдите по адресу
https://servbay-phpixie-test.local/home/add_user
, чтобы внести новую запись в таблицуusers
. - Список пользователей: Перейдите по адресу
https://servbay-phpixie-test.local/home/list_users
, чтобы получить перечень всех пользователей в формате JSON.
Настройка и использование NoSQL (Memcached/Redis)
ServBay включает Memcached и Redis, а также PHP-расширения к ним. Всё, что требуется — настроить соответствующие файлы в PHPixie.
Пример настройки Memcached (assets/config/cache.php
):
Создайте или измените файл assets/config/cache.php
, добавив следующий код:
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // Адрес Memcached по умолчанию в ServBay
'port' => 11211, // Стандартный порт Memcached
'weight' => 100,
],
],
],
];
2
3
4
5
6
7
8
9
10
11
12
13
14
Пример настройки Redis (assets/config/redis.php
):
Создайте или измените файл assets/config/redis.php
следующим образом:
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Адрес Redis по умолчанию в ServBay
'port' => 6379, // Стандартный порт Redis
'timeout' => 0,
'database' => 0, // Индекс базы Redis
],
];
2
3
4
5
6
7
8
9
10
Использование Memcached/Redis:
В контроллере src/App/HTTP/Controller/Home.php
уже реализованы методы action_memcached
и action_redis
, чтобы показать работу компонентов кэширования (Memcached либо Redis — в зависимости от конфигурации).
- Тест Memcached: Перейдите по адресу
https://servbay-phpixie-test.local/home/memcached
, чтобы записать и считать значение из Memcached. - Тест Redis: Перейдите по адресу
https://servbay-phpixie-test.local/home/redis
, чтобы записать и считать значение из Redis.
Убедитесь, что соответствующие сервисы (Memcached и Redis) запущены в ServBay.
Заключение
Выполнив эти шаги, вы успешно создали, настроили и запустили проект PHPixie в локальной среде macOS с помощью ServBay. Вы освоили создание проекта через Composer, настройку веб-сервера через раздел Сайты, интеграцию с реляционными и NoSQL базами данных, а также проверили работоспособность этих функций.
Интегрированная инфраструктура ServBay заметно облегчает развёртывание среды PHP-разработки и позволяет сконцентрироваться на создании кода. Надеемся, это руководство поможет вам быстро стартовать с PHPixie и реализовать следующий веб-проект!