服务容器
<?php
require 'model.php';
require 'view.php';
//创建服务容器
class container
{
//公共对象容器 ,对象内容,默认空数组(公共)
protected $instances = [];
//方法一:绑定(进入)
// bind(对象,创建过程) 。bind(Model,new model)
public function bind($alias/*对象别名*/, \Closure $pracess/*实例化过程*/)
{
$this->instances[$alias] = $pracess;
}
//方法二:取出
public function make($alias, $params = [])
{
// call_user_func_array — 调用回调函数,并把一个数组参数作为回调函数的参数
return call_user_func_array($this->instances[$alias], []);
}
}
//创建容器实例
$container = new container;
//绑定
$container->bind('Model', function () {
return new Model;
});
$container->bind('View', function () {
return new View;
});
class controller3
{
public function index(container $container)
{
// 取出数据
$data = $container->make('Model')->getData();
// 渲染视图
return $container->make('View')->fetch($data);
}
}
$controller = new controller3;
echo $controller->index($container);
总结:没有看懂,尤其是传参这里,有点懵。思路转不过弯来,回看视频的时候感觉好像明白了。关掉视频回放又好像不太懂那样!