建立並運行 ThinkPHP 8 專案
什麼是 ThinkPHP?
ThinkPHP 是一個由中國PHP開發者創建的開源PHP Web框架。它致力於為開發人員提供一個簡潔而高效的工具集,以便構建現代Web應用程式。ThinkPHP 提供了豐富的功能,如路由、會話、快取、認證等,簡化了常見的 Web 開發任務。
ThinkPHP 的主要特性和優勢
- 簡潔與高效:ThinkPHP 的語法簡潔且高效,使代碼更具可讀性和可維護性。
- 豐富的功能集:包括路由、認證、會話管理和快取等,極大地簡化了開發工作。
- 強大的 ORM:ThinkPHP 提供了強大的資料庫操作功能,便於資料庫操作。
- 模組化設計:通過 Composer 套件管理器,輕鬆整合第三方庫和擴充功能。
- 強大的社群支持:擁有龐大的開發者社群和豐富的生態系統。
ThinkPHP 可以幫助開發者快速構建高品質的 Web 應用和 API,適用於各種規模的專案,從小型應用到大型企業級系統。
使用 ServBay 建立並運行 ThinkPHP 8 專案
在這篇文章中,我們將使用 ServBay 提供的 PHP 環境來建立並運行一個 ThinkPHP 8 專案。我們將利用 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。
建立 ThinkPHP 專案
TIP
ServBay 建議開發者把網站放置在/Applications/ServBay/www
目錄下,以方便管理。
安裝 Composer
ServBay 出廠時已經自帶 Composer,無需單獨安裝。
建立 ThinkPHP 專案
使用 Composer 建立一個新的 ThinkPHP 專案:
bashcd /Applications/ServBay/www composer create-project topthink/think servbay-thinkphp-app
1
2進入專案目錄
進入新建成的 ThinkPHP 專案目錄:
bashcd /Applications/ServBay/www/servbay-thinkphp-app
1
初始化配置
配置環境變數
在
config/database.php
文件中配置資料庫連接信息和其他環境變數。確保以下配置已正確設置:php'type' => 'mysql', 'hostname' => '127.0.0.1', 'database' => 'servbay_thinkphp_app', 'username' => 'root', 'password' => 'password', 'hostport' => '3306',
1
2
3
4
5
6
配置 Web 伺服器
DANGER
ThinkPHP 的 Rewrite 規則較一般規則有所不同,所以需要進行自訂。
使用 ServBay 的『主機』功能,通過 Web 伺服器來訪問 ThinkPHP 專案。在 ServBay 的『主機』設置中,添加一個新的主機:
- 名字:
My First ThinkPHP Dev Site
- 域名:
servbay-thinkphp-test.local
然後在右上方點擊自訂配置
,在下面輸入以下內容:
encode zstd gzip
import set-log servbay-thinkphp-test.local
tls internal
@canonicalPath {
file {
try_files {path}/index.php
}
not path */
}
redir @canonicalPath {path}/ 308
root * /Applications/ServBay/www/servbay-thinkphp-app/public
route {
try_files {path} {path}/ /index.php?s={path}&{query}
php_fastcgi unix//Applications/ServBay/tmp/php-cgi-8.3.sock
}
file_server
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
TIP
如果需要不同版本的PHP,請修改php-cgi-8.3.sock
為對應的PHP版本。同時注意修改set-log
為網站對應的域名。
詳細設置步驟請參考 添加第一個網站。
添加示例代碼
在 route/app.php
文件中添加以下代碼,以輸出 "Hello ServBay!":
Route::get('servbay', function () {
return 'Hello ServBay!';
});
2
3
訪問網站
打開瀏覽器,訪問 https://servbay-thinkphp-test.local/servbay
,你會看到網頁輸出 Hello ServBay!
。
NoSQL資料庫示例
Memcached 示例
安裝 Memcached 擴展
在 ServBay 中,Memcached 擴展已經預裝好,無需額外安裝。
配置 Memcached
在
config/cache.php
文件中配置 Memcached 連接信息:php'type' => 'memcached', 'host' => '127.0.0.1',
1
2使用 Memcached
在控制器中使用快取:
phpuse think\facade\Cache; Route::get('/memcached', function () { Cache::set('key', 'value', 600); return Cache::get('key'); });
1
2
3
4
5
6
Redis 示例
安裝 Redis 擴展
在 ServBay 中,Redis 擴展已經預裝好,無需額外安裝。
配置 Redis
在
config/cache.php
文件中配置 Redis 連接信息:php'type' => 'redis', 'host' => '127.0.0.1', 'port' => 6379, 'password' => '',
1
2
3
4使用 Redis
在控制器中使用快取:
phpuse think\facade\Cache; Route::get('/redis', function () { Cache::set('key', 'value'); return Cache::get('key'); });
1
2
3
4
5
6
關聯式資料庫示例
建立資料庫結構和遷移文件
安裝資料庫遷移工具
使用 ThinkPHP 的資料庫遷移工具前,先要安裝:
bashcomposer require topthink/think-migration
1建立遷移文件
使用 ThinkPHP 提供的命令行工具建立遷移文件:
bashphp think migrate:create CreateUserTable
1編輯遷移文件
在
database/migrations
目錄下找到新建立的遷移文件,並編輯它以定義資料庫表結構:phppublic function up() { Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->timestamps(); }); }
1
2
3
4
5
6
7
8
9運行遷移
使用 ThinkPHP 提供的命令行工具運行遷移,建立資料庫表:
bashphp think migrate:run
1
MySQL 示例
配置 MySQL
在
config/database.php
文件中配置 MySQL 連接信息:php'type' => 'mysql', 'hostname' => '127.0.0.1', 'database' => 'servbay_thinkphp_app', 'username' => 'root', 'password' => 'password', 'hostport' => '3306',
1
2
3
4
5
6寫入用戶數據
在控制器中寫入用戶數據:
phpuse think\Db; Route::get('/mysql-add', function () { Db::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; });
1
2
3
4
5
6
7
8
9使用 MySQL
在控制器中調用資料庫:
phpuse think\Db; Route::get('/mysql', function () { $users = Db::table('users')->select(); return json($users); });
1
2
3
4
5
6
PostgreSQL 示例
配置 PostgreSQL
在
config/database.php
文件中配置 PostgreSQL 連接信息:php'type' => 'pgsql', 'hostname' => '127.0.0.1', 'database' => 'servbay_thinkphp_app', 'username' => 'root', 'password' => 'password', 'hostport' => '5432',
1
2
3
4
5
6寫入用戶數據
在控制器中寫入用戶數據:
phpuse think\Db; Route::get('/pgsql-add', function () { Db::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; });
1
2
3
4
5
6
7
8
9使用 PostgreSQL
在控制器中調用資料庫:
phpuse think\Db; Route::get('/pgsql', function () { $users = Db::table('users')->select(); return json($users); });
1
2
3
4
5
6
通過以上步驟,您成功建立並運行了一個 ThinkPHP 8 專案,並使用 ServBay 提供的功能來管理和訪問您的專案,同時連接了多種資料庫並調用數據。