怎么理解thinkphp6中的容器概念

发布于 2019-12-03 16:36:06

最好用通俗的方式来说明下什么是容器,这里可以主要说说thinkphp6中的容器.

查看更多

浏览量
2826
2 个回答
猫哥
猫哥 项目组成员 2019-12-06
希望我的回答能对你有所帮助

容器是为了解决对象实例化与依赖问题而发明的.

有了容器Container我们就可以将任何PHP对象实例塞入容器中,在使用时可以通过容器自动完成对象的实例化和依赖注入.

//一个非容器写法就是
class Url {
    public function __construct(Route $route,Valide $valide)
    {
        ......
    }
}
$url = new Url(new Route(),new Valide());
//容器的写法
$url = $container->make('url',['route','valide']);
//这样使用就好了,Container自动完成对象的依赖入驻和实例化,当然这个前提是你已经将三个类绑定入容器中,一般是这样
$container->bind('route',function($container){
    return new Route();
});
猫哥
猫哥 项目组成员 2024-04-19
希望我的回答能对你有所帮助

容器顾名思义真的就是一个容器,关键是它是一个管理"类"的容器. 那为什么要整这么一个东西呢?
因为类和类之间会存在依赖,每个类在使用的时候必须实例化才可以使用,而容器的便捷在于它可以"自动依赖注入"和"自动实例化".
也就是如果使用了容器,将自动实例化类对象并将依赖的类自动完成注入,是不是一下子就非常简单了.

举个栗子: 我们要查询某用户的顶顶那,那么就有一个订单类对象实例且依赖用户类对象实例

$order = Container::getInstance()->make(UserOrder::class);
这样就直接返回了用户订单实例对象,容器内部自动完成User::class的依赖注入,并完成UserOrder对象实例化

学习
记录

发布
问题

分享
好友

手机
浏览

扫码手机浏览