Slim创建微框架

本文介绍了如何在PHP环境中搭建Slim框架,从项目的初始化、安装依赖,到创建项目入口和路由处理,展示了如何实现简单的HTTP请求响应。接着,文章详细讲解了如何将Slim应用与MVC模式结合,创建HomeController并处理请求,通过Composer配置自动加载解决命名空间问题,最后通过修改composer.json文件和执行命令使App命名空间生效,实现了业务逻辑的初步组织。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Slim创建微框架

一. 环境要求

  1. PHP version >7.0
  2. Composer

二.项目初始化

	####创建文件夹
	mkdir api
	cd api
	###如果为window环境下,通过cmd进入此目录
	### 执行一下命令	

在这里插入图片描述
在我们的项目下就下好了依赖,可以自动加载Slim框架
!](https://img-blog.csdnimg.cn/16bc76389edf46b4a970c9a81d91db8c.png)

三.创建项目入口

  1. 在项目根目录创建public,并在改该目录下创建index.php
  2. 在项目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();
  1. 如果需要实现接受请求与响应,则还需要下载一部分依赖,在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
  1. 利用php自带的server创建php服务, php -S localhost:8000 ,在浏览器中访问localhost:8888,我们将会看到 hello world。

四.使用MVC模式

我们的业务逻辑不可能全部在index.php文件下实现,那么我们在使用mvc模式实现我们的业务逻辑

  1. 创建业务目录,在项目根目录下创建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方法将会处理此请求,并进行返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值