创建并运行 PHPixie 项目
什么是 PHPixie?
PHPixie 是一个轻量级的 PHP 框架,适用于快速开发高性能的 Web 应用程序。它遵循 HMVC(Hierarchical Model-View-Controller)设计模式,提供了简洁的代码结构和高效的性能。PHPixie 以其简单、灵活和高性能而著称,是许多开发者的首选框架。
PHPixie 的主要特性和优势
- 轻量级:PHPixie 的核心系统非常小巧,只包含必要的组件,加载速度非常快。
- 高性能:PHPixie 以其高效的性能和速度而闻名,能够处理高并发请求。
- 易于学习:提供简洁易用的 API 和丰富的文档,开发者可以快速上手。
- 灵活性:允许开发者自由选择和使用第三方库和插件,方便扩展和定制功能。
- 强大的社区支持:拥有活跃的开发者社区和丰富的第三方扩展。
PHPixie 可以帮助开发者快速构建高性能、高质量的 Web 应用,适用于各种规模的项目。
使用 ServBay 创建并运行 PHPixie 项目
在这篇文章中,我们将使用 ServBay 提供的 PHP 环境来创建并运行一个 PHPixie 项目。我们将利用 ServBay 的『主机』功能来设置 Web 服务器,并通过简单的配置实现项目的访问。
注意:如果你曾经是 NGINX 或 Apache 的用户
ServBay 默认使用 Caddy 作为 Web 服务器。对于从 NGINX 和 Apache 迁移到 ServBay 的用户,有一些关键变动点需要注意:
Caddy 配置
ServBay 已经内置了 Caddy,并且默认配置已经优化和调试好。开发者只需通过 ServBay 的『主机』功能来管理站点,无需手动修改 Caddy 配置文件。
Rewrite 规则和 .htaccess
在 NGINX 和 Apache 中,开发者通常需要自己编写 Rewrite 规则和 .htaccess 文件来处理 URL 重写和其他配置。然而,ServBay 出厂时已经配置好了 Caddy 的规则,因此,除非有特殊需求,否则开发者无需自己编写这些规则。
了解更多
更多相关信息,请参阅Rewrite与htaccess、Apache网站如何迁移到ServBay、NGINX网站如何迁移到ServBay。
创建 PHPixie 项目
TIP
ServBay 建议开发者把网站放置在/Applications/ServBay/www
目录下,以方便管理。
安装 Composer
ServBay 出厂时已经自带 Composer,无需单独安装。
创建 PHPixie 项目
使用 Composer 创建一个新的 PHPixie 项目:
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
配置 Web 服务器
使用 ServBay 的『主机』功能,通过 Web 服务器来访问 PHPixie 项目。在 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
关系型数据库示例
创建数据库结构和迁移文件
创建迁移文件
使用 PHPixie 的 CLI 工具创建迁移文件:
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运行迁移
使用 PHPixie 的 CLI 工具运行迁移,创建数据库表:
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,并应用于您的项目中。