Php Slim3集装箱良好实践?

Php Slim3集装箱良好实践?,php,routing,rendering,containers,slim,Php,Routing,Rendering,Containers,Slim,您好,我正在学习PHP,我正在用Slim3框架构建RESTAPI。我创建如下路线: $container['HomeController'] = function () { return new HomeController(); }; $currentContainer = CurrentContainer::getInstance(); $currentContainer->setContainer($container); $app->get('/', 'Ho

您好,我正在学习PHP,我正在用Slim3框架构建RESTAPI。我创建如下路线:

$container['HomeController'] = function () {
    return new HomeController();
};

$currentContainer = CurrentContainer::getInstance();   
$currentContainer->setContainer($container);

$app->get('/', 'HomeController:index')->setName("index");
我的问题是我必须将$container传递给创建的每个控制器类iv'e,因为我需要控制器中的容器上下文来进行路由等

然后im构建一个单例容器类,如下所示:

class CurrentContainer
{

    private static $instance;
    private $container;

    private function __construct()
    {
    }

    private function __clone()
    {
    }

    public static function getInstance()
    {
        if (self::$instance == null) {
        self::$instance = new CurrentContainer();
        }
        return self::$instance;
    }

    public function setContainer($container)
    {
        $this->container = $container;
    }

    /**
     * @return mixed
     */
    public function getContainer()
    {
        return $this->container;
    }
}
class Controller
{


    /**
     * @var mixed
     */
    protected $view;

    /**
     * @var
    */
    protected $router;

    public function __construct()
    {
        $container = CurrentContainer::getInstance()->getContainer();
        $this->view = $container->view;
        $this->router = $container->router;
    }


   }
因此,现在可以创建如下“主控制器”:

class CurrentContainer
{

    private static $instance;
    private $container;

    private function __construct()
    {
    }

    private function __clone()
    {
    }

    public static function getInstance()
    {
        if (self::$instance == null) {
        self::$instance = new CurrentContainer();
        }
        return self::$instance;
    }

    public function setContainer($container)
    {
        $this->container = $container;
    }

    /**
     * @return mixed
     */
    public function getContainer()
    {
        return $this->container;
    }
}
class Controller
{


    /**
     * @var mixed
     */
    protected $view;

    /**
     * @var
    */
    protected $router;

    public function __construct()
    {
        $container = CurrentContainer::getInstance()->getContainer();
        $this->view = $container->view;
        $this->router = $container->router;
    }


   }
现在我的所有控制器都从控制器类扩展。。。 我现在的问题是。。。这是个好主意还是有理由不这样做?
我感谢每一个输入

我已经用Slim框架构建了一些API,并且尝试了很多方法来完成它(当然是以正确的方式)。我在Slim框架上实现了MVC模式。下面的代码示例:

  • 对于控制器,我创建了一个注入容器的基本控制器。因此,代码:

  • 我已经用Slim框架构建了一些API,还尝试了很多方法来实现它(当然是以正确的方式)。我在Slim框架上实现了MVC模式。下面的代码示例:

  • 对于控制器,我创建了一个注入容器的基本控制器。因此,代码:

  • 这更像是一个RouteAction,而不是一个控制器,因为类在使用_invoke()时不能有多个操作哦,我明白了。我猜你想用正面来称呼容器。我建议您使用照明/正面。这更像是一个RouteAction,而不是一个控制器,因为类在使用_invoke()时不能有多个操作哦,我明白了。我猜你想用正面来称呼容器。我建议您使用照明/正面。你可以跟着。