Создание и запуск проекта PHPixie
Что такое PHPixie?
PHPixie - это легковесный PHP-фреймворк, подходящий для быстрого развертывания высокопроизводительных веб-приложений. Он следует дизайну HMVC (иерархической модели Вида-Контроллера), предоставляя чистую структуру кода и высокую производительность. PHPixie известен своей простотой, гибкостью и высокой производительностью, являясь предпочтительным фреймворком для многих разработчиков.
Основные особенности и преимущества PHPixie
- Легковесный: Основная система PHPixie очень компактна и включает только необходимые компоненты, что обеспечивает высокую скорость загрузки.
- Высокая производительность: PHPixie известен своей эффективной производительностью и быстротой, способной справляться с высокими нагрузками.
- Легкость в изучении: Предоставляя простой и удобный API и обширную документацию, разработчики могут быстро начать работу.
- Гибкость: Позволяет разработчикам свободно выбирать и использовать сторонние библиотеки и плагины, что упрощает расширение и кастомизацию функционала.
- Сильное сообщество: Имеет активное сообщество разработчиков и богатый выбор сторонних расширений.
PHPixie помогает разработчикам быстро строить высокопроизводительные и качественные веб-приложения, подходящие для проектов любого масштаба.
Создание и запуск проекта PHPixie с использованием ServBay
В этой статье мы будем использовать PHP-окружение, предоставленное ServBay, для создания и запуска проекта PHPixie. Мы настроим веб-сервер с помощью функции «Host» в ServBay и обеспечим доступ к проекту через простую конфигурацию.
Внимание: Если вы ранее использовали NGINX или Apache
По умолчанию ServBay использует Caddy в качестве веб-сервера. Для пользователей, мигрирующих с NGINX и Apache на ServBay, следует обратить внимание на некоторые ключевые изменения:
Настройка Caddy
ServBay уже включает Caddy с оптимизированной конфигурацией. Разработчикам достаточно управлять сайтами через функцию «Host» в ServBay, не нужно вручную изменять конфигурационные файлы Caddy.
Правила перезаписи и .htaccess
В NGINX и Apache разработчикам обычно приходится писать собственные правила перезаписи и файлы .htaccess для обработки URL-перезаписей и других настроек. Однако, в ServBay уже настроены правила Caddy, и, если нет особых запросов, разработчики не должны самостоятельно писать эти правила.
Узнать больше
Для дополнительной информации, пожалуйста, смотрите Rewrite и htaccess, КАК мигрировать сайт с Apache на ServBay, КАК мигрировать сайт с NGINX на ServBay.
Создание проекта PHPixie
TIP
ServBay рекомендует размещать сайты в каталоге /Applications/ServBay/www
для удобства управления.
Установка Composer
ServBay поставляется с предустановленным Composer, который не требует отдельной установки.
Создание проекта PHPixie
Создайте новый проект PHPixie с помощью Composer:
bashcd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app composer create-project phpixie/project .
1
2
3
4Переход к каталогу проекта
Перейдите в каталог только что созданного проекта PHPixie:
bashcd /Applications/ServBay/www/servbay-phpixie-app
1
Инициализация конфигурации
Настройка соединения с базой данных
Конфигурируйте информацию о соединении с базой данных в файле
assets/config/database.php
:phpreturn [ 'default' => [ 'driver' => 'pdo', 'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app', 'user' => 'root', 'password' => 'password', 'options' => [] ] ];
1
2
3
4
5
6
7
8
9
Настройка веб-сервера
Используйте функцию «Host» в ServBay для доступа к проекту PHPixie через веб-сервер. В настройках «Host» в ServBay добавьте новый хост:
- Имя:
My First PHPixie Dev Site
- Домен:
servbay-phpixie-test.local
- Тип сайта:
PHP
- Версия PHP:
8.3
- Корневой каталог сайта:
/Applications/ServBay/www/servbay-phpixie-app/web
Для подробного порядка настройки смотрите Добавление первого сайта.
Добавление примера кода
В файле src/App/HTTP/Controller/Home.php
добавьте следующий код:
namespace App\HTTP\Controller;
use PHPixie\HTTP\Request;
use PHPixie\Template;
class Home extends \PHPixie\Controller
{
protected $template;
public function __construct(Template $template)
{
$this->template = $template;
}
public function action_index(Request $request)
{
return $this->template->render('app:home');
}
public function action_memcached(Request $request)
{
$cache = $this->components->cache();
$cache->set('key', 'Hello Memcached!', 60);
$value = $cache->get('key');
return $this->response()->string($value);
}
public function action_redis(Request $request)
{
$redis = $this->components->redis();
$redis->set('key', 'Hello Redis!');
$value = $redis->get('key');
return $this->response()->string($value);
}
public function action_mysql_add(Request $request)
{
$query = $this->components->database()->query();
$query->insert('users')->data([
'name' => 'ServBay',
'email' => '[email protected]',
])->execute();
return $this->response()->string('User added');
}
public function action_mysql(Request $request)
{
$query = $this->components->database()->query();
$users = $query->select('*')->from('users')->execute()->fetchAll();
return $this->response()->json($users);
}
}
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
В файле assets/templates/app/home.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</title>
</head>
<body>
<h1>Welcome to PHPixie</h1>
<p>The page you are looking at is being generated dynamically by PHPixie.</p>
</body>
</html>
2
3
4
5
6
7
8
9
10
11
12
Доступ к веб-сайту
Откройте браузер и посетите следующий URL:
https://servbay-phpixie-test.local
: Вы увидите вывод на экранеWelcome to PHPixie
.
Пример NoSQL базы данных
Пример Memcached
Установка расширения Memcached
В ServBay расширение Memcached уже предустановлено, не требует дополнительной установки.
Настройка Memcached
В файле
assets/config/cache.php
настройте информацию о соединении с Memcached:phpreturn [ 'default' => [ 'driver' => 'memcached', 'servers' => [ [ 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100, ], ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12Использование Memcached
Использование кэша в контроллере:
phppublic function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached!', 60); $value = $cache->get('key'); return $this->response()->string($value); }
1
2
3
4
5
6
7
Пример Redis
Установка расширения Redis
В ServBay расширение Redis уже предустановлено, не требует дополнительной установки.
Настройка Redis
В файле
assets/config/redis.php
настройте информацию о соединении с Redis:phpreturn [ 'default' => [ 'hostname' => '127.0.0.1', 'port' => 6379, 'timeout' => 0, 'database' => 0, ], ];
1
2
3
4
5
6
7
8Использование Redis
Использование кэша в контроллере:
phppublic function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis!'); $value = $redis->get('key'); return $this->response()->string($value); }
1
2
3
4
5
6
7
Пример использования реляционной базы данных
Создание структуры базы данных и файлов миграции
Создание файла миграции
Используйте CLI-инструмент PHPixie для создания файла миграции:
bashphp pixie generate:migration create_users_table
1Редактирование файла миграции
В каталоге
assets/migrations
найдите вновь созданный файл миграции и отредактируйте его для определения структуры таблицы базы данных:phppublic function up() { $this->schema->create('users', function($table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->timestamps(); }); } public function down() { $this->schema->drop('users'); }
1
2
3
4
5
6
7
8
9
10
11
12
13
14Запуск миграции
С помощью CLI-инструмента PHPixie выполните миграцию для создания таблицы базы данных:
bashphp pixie migrate
1
Пример MySQL
Настройка MySQL
В файле
assets/config/database.php
настройте информацию о соединении с MySQL:phpreturn [ 'default' => [ 'driver' => 'pdo', 'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app', 'user' => 'root', 'password' => 'password', 'options' => [] ] ];
1
2
3
4
5
6
7
8
9Запись данных пользователя
Запись данных пользователя в контроллере:
phppublic function action_mysql_add(Request $request) { $query = $this->components->database()->query(); $query->insert('users')->data([ 'name' => 'ServBay', 'email' => '[email protected]', ])->execute(); return $this->response()->string('User added'); }
1
2
3
4
5
6
7
8
9Использование MySQL
Вызов базы данных в контроллере:
phppublic function action_mysql(Request $request) { $query = $this->components->database()->query(); $users = $query->select('*')->from('users')->execute()->fetchAll(); return $this->response()->json($users); }
1
2
3
4
5
6
Пример PostgreSQL
Настройка PostgreSQL
В файле
assets/config/database.php
настройте информацию о соединении с PostgreSQL:phpreturn [ 'default' => [ 'driver' => 'pdo', 'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app', 'user' => 'root', 'password' => 'password', 'options' => [] ] ];
1
2
3
4
5
6
7
8
9Запись данных пользователя
Запись данных пользователя в контроллере:
phppublic function action_pgsql_add(Request $request) { $query = $this->components->database()->query(); $query->insert('users')->data([ 'name' => 'ServBay', 'email' => '[email protected]', ])->execute(); return $this->response()->string('User added'); }
1
2
3
4
5
6
7
8
9Использование PostgreSQL
Вызов базы данных в контроллере:
phppublic function action_pgsql(Request $request) { $query = $this->components->database()->query(); $users = $query->select('*')->from('users')->execute()->fetchAll(); return $this->response()->json($users); }
1
2
3
4
5
6
Этими шагами вы успешно создали и запустили проект PHPixie и использовали функции, предоставляемые ServBay для управления и доступа к вашему проекту, одновременно подключаясь к различным базам данных и вызывая данные. Надеюсь, эта статья поможет вам быстро освоить PHPixie и применить его в ваших проектах.