建立並運行 PHPixie 專案
什麼是 PHPixie?
PHPixie 是一個輕量級的 PHP 框架,適合快速開發高效能的 Web 應用。它遵循 HMVC(階層式模型-視圖-控制器)設計模式,提供簡潔的代碼結構和高效性能。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,並應用於您的專案中。