Slim创建微框架
一. 环境要求
- PHP version >7.0
- Composer
二.项目初始化
####创建文件夹
mkdir api
cd api
###如果为window环境下,通过cmd进入此目录
### 执行一下命令
在我们的项目下就下好了依赖,可以自动加载Slim框架
三.创建项目入口
- 在项目根目录创建public,并在改该目录下创建index.php
- 在项目index.php下写入以下内容
<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;
require __DIR__ . '/../vendor/autoload.php';
// Instantiate App
$app = AppFactory::create();
// Add error middleware
$app->addErrorMiddleware(true, true, true);
// Add routes
$app->get('/', function (Request $request, Response $response) {
$response->getBody()->write('<a href="/hello/world">Try /hello/world</a>');
return $response;
});
$app->get('/hello/{name}', function (Request $request, Response $response, $args) {
$name = $args['name'];
$response->getBody()->write("Hello, $name");
return $response;
});
$app->run();
- 如果需要实现接受请求与响应,则还需要下载一部分依赖,在cmd下执行
composer require slim/psr7
composer require httpsoft/http-message httpsoft/http-server-request
composer require nyholm/psr7 nyholm/psr7-server
composer require guzzlehttp/psr7
composer require laminas/laminas-diactoros
- 利用php自带的server创建php服务, php -S localhost:8000 ,在浏览器中访问localhost:8888,我们将会看到 hello world。
四.使用MVC模式
我们的业务逻辑不可能全部在index.php文件下实现,那么我们在使用mvc模式实现我们的业务逻辑
- 创建业务目录,在项目根目录下创建app目录
2 在HomeController内写入以下内容
<?php
namespace App\controllers;
use Slim\Http\ServerRequest;
use Slim\Http\Response;
use Psr\Container\ContainerInterface;
class HomeController{
public function index(ServerRequest $request, Response $response)
{
$response->getBody()->write("Hello, world!");
return $response;
}
}
3 在public\index.php 下写入以下内容
<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;
use Slim\Factory\ServerRequestCreatorFactory;
require __DIR__ . '/../vendor/autoload.php';
define("ROOT_PATH", __DIR__ . "/../");
$app = AppFactory::create();
$app->get('/',"App\controllers\HomeController:index");
$app->run();
4 此时执行php -S localhost:8000 ,通过接口访问,将会报App\controller\HomeController类找不到,那是因为我们没有引入App\controller\HomeController,就会报出致命错误,我们用psr-4进行自动加载,我们require DIR . '/…/vendor/autoload.php’自动把App空间下的类加载进来。
5 打开项目根目录下的composer.json,添加以下内容
然后在cmd下执行 composer dump-autoload,此时App命名空间就会自动加载到项目中。此时访问localhost:8888,HomeController的index方法将会处理此请求,并进行返回。