opencart中的load类和Registry类及controller分析
来源:互联网 发布:药房进销存软件排名 编辑:程序博客网 时间:2024/05/17 21:12
$registry = new Registry();//启动注册机$load = new load($registry);//load类引用注册机 ->指向reg$registry->set('load', $load);//注册机注册load类$co = new co($registry);//控制器引用注册机 ->指向reg$co->action();//方法中通过load类向注册机里注册了model类,注意:这时控制器里的注册机被改变,因为他们用的是同一个实例$registry/*注册机*/final class Registry {private $data = array();public function get($key) {return (isset($this->data[$key]) ? $this->data[$key] : null);}public function set($key, $value) {$this->data[$key] = $value;}public function has($key) {return isset($this->data[$key]);}}//modelclass modelcampaignhelp{}//控制器class co {protected $registry;function __construct($Registry){$this->registry = $Registry;}public function __get($key) {return $this->registry->get($key);} public function __set($key, $value) {$this->registry->set($key, $value);}function action(){//print_r($this);$this->load->model('modelcampaignhelp'); print_r($this);exit;}}//loadclass load{function __construct($Registry){$this->registry = $Registry;}function model($class){print_r($this->registry);$this->registry->set($class, new $class);}}exit;
简化版:
class a {private $v = array();public function set($v){$this->v= $v;}}class b1 {function __construct($a){$this->a = $a;$a->set('b1');}}class b2 {function __construct($a){$this->a = $a;$a->set('b2');}}$a = new a();$b1 = new b1($a);$b2 = new b2($a);//由于b2类中改变了注册机$a,所以b1的结果随之改变。print_r($b1);exit;
0 0
- opencart中的load类和Registry类及controller分析
- opencart分析
- opencart 业务逻辑核心controller
- Tomcat源码分析-JMX之Registry类(中)
- Docker Registry的定制和性能分析
- codeigniter源代码分析 - 控制器类 Controller.php
- glance-0.1.7 分析(五)—— glance/registry/db 和 glance/registry/db/sqlalchemy
- OpenCart之下载类文件(Downloads)教程
- core包中的类及代码分析
- ui包中的类及代码分析
- routing包中的类及代码分析
- movement包中的类及代码分析
- report包中的类及代码分析
- Controller类
- Controller类(Leap:: Controller)
- Hibernate中的get()和load()
- hibernate中的get和load
- iOS中的load和initialize
- 栈的基本操作(线性存储)
- HTTP协议的主要特点
- STL 堆(heap)
- python cook book第三版 读书笔记4(第四章,迭代器和生成器)
- Android之achartengine简单示例(折线的光滑化)
- opencart中的load类和Registry类及controller分析
- 两个二进制数异或的结果
- java 欢迎进入设计模式世界之前凑
- maven安装配置-eclipsemaven插件-导入maven项目全过程
- Linux getopt_long参数
- Java语言实现99乘法表
- json length
- phpMyAdmin"高级功能未全部设置,部分功能不可用。要查出原因请点这里"及"配置文件现在需要一个短语密码"
- C++的背影