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

Original 2019-04-22 23:59:00 263
abstract:<?php // 工具类 class Db { public function conn() { return '数据库连接成功!<br>'; } } class Validate { public function check() { return '数据验证成功!
<?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

Correcting teacher:查无此人Correction time:2019-04-23 13:48:31
Teacher's summary:完成的不错。有问题可以提交工单,作业中你无法追问。 call_user_func_array有两个参数,第1个参数是一个字符串,表示要调用的函数名,第2个参数是一个数组,表示参数列表,按照顺序依次会传递给要调用的函数。

Release Notes

Popular Entries