创建并运行 Slim 项目
什么是 Slim?
Slim 是一个轻量级的 PHP 微框架,专为快速构建简单但强大的 Web 应用程序和 API 而设计。它提供了基本的路由、请求处理和响应处理功能,适合那些需要快速开发和部署的项目。
Slim 的主要特性和优势
- 轻量级:Slim 框架非常小巧,适用于构建小型和中型应用程序。
- 灵活性:可以与任何第三方组件或库集成,提供极大的灵活性。
- 易于使用:简单的 API 和清晰的文档,使得开发者可以快速上手。
- 强大的路由功能:支持多种 HTTP 方法和复杂的路由配置。
- 中间件支持:可以轻松添加中间件以处理请求和响应。
Slim 是构建 RESTful API 和快速原型开发的理想选择。
使用 ServBay 创建并运行 Slim 项目
在这篇文章中,我们将使用 ServBay 提供的 PHP 环境来创建并运行一个 Slim 项目。我们将利用 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。
创建 Slim 项目
TIP
ServBay 建议开发者把网站放置在/Applications/ServBay/www
目录下,以方便管理。
安装 Composer
ServBay 出厂时已经自带 Composer,无需单独安装。
创建 Slim 项目
使用 Composer 创建一个新的 Slim 项目:
bashcd /Applications/ServBay/www mkdir servbay-slim-app cd servbay-slim-app composer require slim/slim "^4.0" composer require slim/psr7 -W
1
2
3
4
5进入项目目录
进入新创建的 Slim 项目目录:
bashcd /Applications/ServBay/www/servbay-slim-app
1
初始化配置
创建入口文件
在项目根目录下创建
public/index.php
文件,并添加以下代码:php<?php require __DIR__ . '/../vendor/autoload.php'; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Slim\Factory\AppFactory; $app = AppFactory::create(); $app->get('/', function (Request $request, Response $response, $args) { $response->getBody()->write("Hello ServBay!"); return $response; }); $app->run();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
配置 Web 服务器
使用 ServBay 的『主机』功能,通过 Web 服务器来访问 Slim 项目。在 ServBay 的『主机』设置中,添加一个新的主机:
- 名字:
My First Slim Dev Site
- 域名:
servbay-slim-test.local
- 网站类型:
PHP
- PHP 版本:选择
8.3
- 网站根目录:
/Applications/ServBay/www/servbay-slim-app/public
详细设置步骤请参考 添加第一个网站。
添加示例代码
在 public/index.php
文件中添加以下代码,以输出 "Hello ServBay!":
$app->get('/', function (Request $request, Response $response, $args) {
$response->getBody()->write("Hello ServBay!");
return $response;
});
2
3
4
访问网站
打开浏览器,访问 https://servbay-slim-test.local
,你会看到网页输出 Hello ServBay!
。
NoSQL数据库示例
Memcached 示例
安装 Memcached 扩展
在 ServBay 中,Memcached 扩展已经预装好,无需额外安装。
配置 Memcached
在
composer.json
文件中添加 Memcached 依赖:json{ "require": { "slim/slim": "^4.0", "memcached/memcached": "^3.1" } }
1
2
3
4
5
6然后运行
composer update
安装依赖。配置路由
在
public/index.php
文件中添加以下代码:php$app->get('/memcached', function (Request $request, Response $response, $args) { $memcached = new Memcached(); $memcached->addServer('127.0.0.1', 11211); $cacheKey = 'my_cache_key'; $cachedData = $memcached->get($cacheKey); if ($cachedData === false) { $cachedData = 'Hello Memcached!'; $memcached->set($cacheKey, $cachedData); } $response->getBody()->write($cachedData); return $response; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15使用 Memcached
打开浏览器,访问
https://servbay-slim-test.local/memcached
Redis 示例
安装 Redis 扩展
在 ServBay 中,Redis 扩展已经预装好,无需额外安装。
配置 Redis
在
composer.json
文件中添加 Redis 依赖:json{ "require": { "slim/slim": "^4.0", "predis/predis": "^1.1" } }
1
2
3
4
5
6然后运行
composer update
安装依赖。配置路由
在
public/index.php
文件中添加以下代码:php$app->get('/redis', function (Request $request, Response $response, $args) { $redis = new Predis\Client([ 'scheme' => 'tcp', 'host' => '127.0.0.1', 'port' => 6379, ]); $cacheKey = 'my_cache_key'; $cachedData = $redis->get($cacheKey); if ($cachedData === null) { $cachedData = 'Hello Redis!'; $redis->set($cacheKey, $cachedData); } $response->getBody()->write($cachedData); return $response; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18使用 Redis
打开浏览器,访问
https://servbay-slim-test.local/redis
关系型数据库示例
创建数据库结构和迁移文件
创建迁移文件
使用 Phinx 创建迁移文件:
bashcomposer require robmorgan/phinx vendor/bin/phinx init
1
2编辑迁移文件
在
db/migrations
目录下创建一个新的迁移文件,并编辑它以定义数据库表结构:phpuse Phinx\Migration\AbstractMigration; class CreateUsersTable extends AbstractMigration { public function change() { $table = $this->table('users'); $table->addColumn('name', 'string') ->addColumn('email', 'string', ['unique' => true]) ->create(); } }
1
2
3
4
5
6
7
8
9
10
11
12运行迁移
使用 Phinx 命令运行迁移,创建数据库表:
bashvendor/bin/phinx migrate
1
MySQL 示例
配置 MySQL
在
composer.json
文件中添加 MySQL 依赖:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6然后运行
composer update
安装依赖。配置路由
在
public/index.php
文件中添加以下代码:phpuse Illuminate\Database\Capsule\Manager as Capsule; $capsule = new Capsule; $capsule->addConnection([ 'driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'servbay_slim_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]); $capsule->setAsGlobal(); $capsule->bootEloquent(); $app->get('/mysql-add', function (Request $request, Response $response, $args) { $user = Capsule::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]' ]); $response->getBody()->write('User added'); return $response; }); $app->get('/mysql', function (Request $request, Response $response, $args) { $users = Capsule::table('users')->get(); $response->getBody()->write($users->toJson()); return $response; });
1
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写入用户数据
打开浏览器,访问
https://servbay-slim-test.local/mysql-add
和https://servbay-slim-test.local/mysql
PostgreSQL 示例
配置 PostgreSQL
在
composer.json
文件中添加 PostgreSQL 依赖:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6然后运行
composer update
安装依赖。配置路由
在
public/index.php
文件中添加以下代码:phpuse Illuminate\Database\Capsule\Manager as Capsule; $capsule = new Capsule; $capsule->addConnection([ 'driver' => 'pgsql', 'host' => '127.0.0.1', 'database' => 'servbay_slim_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', ]); $capsule->setAsGlobal(); $capsule->bootEloquent(); $app->get('/pgsql-add', function (Request $request, Response $response, $args) { $user = Capsule::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]' ]); $response->getBody()->write('User added'); return $response; }); $app->get('/pgsql', function (Request $request, Response $response, $args) { $users = Capsule::table('users')->get(); $response->getBody()->write($users->toJson()); return $response; });
1
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写入用户数据
打开浏览器,访问
https://servbay-slim-test.local/pgsql-add
和https://servbay-slim-test.local/pgsql
通过以上步骤,您成功创建并运行了一个 Slim 项目,并使用 ServBay 提供的功能来管理和访问您的项目,同时连接了多种数据库并调用数据。