You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slim PHP容器配置求助:新手入门遇阻,求可运行基础示例

Slim PHP容器基础可运行示例(修复你的代码问题)

你的代码有两个核心问题导致容器无法正常工作:

  • 注册HomeController时尝试获取未定义的view服务,直接抛出依赖缺失错误
  • 控制器构造函数需要ContainerInterface实例,但你注册时却传入了不存在的$view,类型不匹配

以下是修复后可直接运行的完整示例,包含容器的基础使用逻辑:

步骤1:确保依赖安装

执行命令安装必备包:

composer require slim/slim php-di/php-di slim/psr7

项目目录结构(和你的保持一致)

--api
   --src
     --Controllers
       --HomeController.php
     --public
       --.htaccess
       --index.php
  .htaccess

修改后的public/index.php代码

use DI\Container;
use Psr\Http\Message\ResponseInterface as Response;
use Slim\Factory\AppFactory;
use api\Controllers\HomeController;
use Psr\Container\ContainerInterface;

require __DIR__ . '/../vendor/autoload.php';

// 初始化PHP-DI容器
$container = new Container();

// 给Slim应用绑定容器
AppFactory::setContainer($container);
$app = AppFactory::create();
$app->setBasePath('/api');

// 注册HomeController到容器
// 闭包中注入容器实例,匹配控制器构造函数的参数需求
$container->set(HomeController::class, function (ContainerInterface $container) {
    return new HomeController($container);
});

// 路由绑定控制器方法
$app->get('/', [HomeController::class, 'home']);

$app->run();

修改后的src/Controllers/HomeController.php代码

namespace api\Controllers;
use Psr\Container\ContainerInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

class HomeController
{
    private $container;

    // 构造函数接收容器实例,后续可通过容器获取其他服务
    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }

    public function home(ServerRequestInterface $request, ResponseInterface $response, array $args): ResponseInterface
    {
        $response->getBody()->write('Hello from Slim Container!');
        return $response;
    }
}

容器基础逻辑说明

  1. 容器初始化:new Container()创建PHP-DI容器实例,用来统一管理所有服务的依赖关系
  2. 服务注册:通过$container->set()把控制器(或其他服务)注册到容器,闭包负责实例化对象并注入所需依赖
  3. 自动解析:当路由调用控制器时,Slim会自动从容器中获取已注册的控制器实例,无需手动实例化
  4. 依赖扩展:后续如果需要添加视图、数据库连接等服务,只需在容器中注册对应服务,然后在控制器中通过$this->container->get('服务名')即可获取

验证运行

启动本地PHP内置服务器:

cd api/public
php -S localhost:8000

访问http://localhost:8000/api/,即可看到返回的Hello from Slim Container!

内容的提问来源于stack exchange,提问作者nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:07:03