博客列表 >PHP使用服务容器渲染MVC模板视图(进阶二)

PHP使用服务容器渲染MVC模板视图(进阶二)

阿心
阿心原创
2020年05月17日 22:27:59559浏览

服务容器

  1. <?php
  2. require 'model.php';
  3. require 'view.php';
  4. //创建服务容器
  5. class container
  6. {
  7. //公共对象容器 ,对象内容,默认空数组(公共)
  8. protected $instances = [];
  9. //方法一:绑定(进入)
  10. // bind(对象,创建过程) 。bind(Model,new model)
  11. public function bind($alias/*对象别名*/, \Closure $pracess/*实例化过程*/)
  12. {
  13. $this->instances[$alias] = $pracess;
  14. }
  15. //方法二:取出
  16. public function make($alias, $params = [])
  17. {
  18. // call_user_func_array — 调用回调函数,并把一个数组参数作为回调函数的参数
  19. return call_user_func_array($this->instances[$alias], []);
  20. }
  21. }
  22. //创建容器实例
  23. $container = new container;
  24. //绑定
  25. $container->bind('Model', function () {
  26. return new Model;
  27. });
  28. $container->bind('View', function () {
  29. return new View;
  30. });
  31. class controller3
  32. {
  33. public function index(container $container)
  34. {
  35. // 取出数据
  36. $data = $container->make('Model')->getData();
  37. // 渲染视图
  38. return $container->make('View')->fetch($data);
  39. }
  40. }
  41. $controller = new controller3;
  42. echo $controller->index($container);
总结:没有看懂,尤其是传参这里,有点懵。思路转不过弯来,回看视频的时候感觉好像明白了。关掉视频回放又好像不太懂那样!
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议