创建并运行 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 提供的功能来管理和访问您的项目,同时连接了多种数据库并调用数据。