返回只用了依赖容器......登陆

只用了依赖容器注入,没有用facade门面模式

靖哥哥2019-04-22 23:59:00263
<?php
// 工具类
class Db
{
public function conn()
{
return '数据库连接成功!<br>';
}
}
class Validate
{
public function check()
{
return '数据验证成功!<br>';
}
}
class View
{
public function show()
{
return '数据展示成功!<br>';
}
}
// 创建容器,将类与类的实例化过程绑定到容器中
class Container
{
protected $container = [];
public function bind($validate,Closure $param)
{
$this->container[$validate] = $param;
}
public function make($validate,$param = [])
{
return call_user_func_array($this->container[$validate],[]);
}
}
// 服务注册,bind将可能用到的工具类全部绑定到容器中
$container = new Container();
$container->bind('db',function(){
return new Db();
});
$container->bind('validate',function(){
return new Validate();
});
$container->bind('view',function(){
return new View();
});
// 依赖容器
class User
{
public function login(Container $container)
{
echo $container->make('db')->conn();
echo $container->make('validate')->check();
echo $container->make('view')->show();
}
}
$user = new User();
echo $user->login($container);

老师我想问:Container类中的make()方法中的call_user_func_array()执行的是哪个函数啊?是make()吗?

sf.png

最新手记推荐

• 用composer安装thinkphp框架的步骤• 省市区接口说明• 用thinkphp,后台新增栏目• 管理员添加编辑删除• 管理员添加编辑删除

全部回复(0)我要回复

暂无评论~
  • 取消回复发送