/ PHP

有关php中的类的一些记录

说来惭愧,写了一年多的php,至今尚未在实际应用中用过类。

今天在分析一套开源程序时就被类的一些东西搞晕了,特此记录下。

发现问题的地方在一个派生类A,该类中使用了一个未定义的变量,但是看变量名却是一个类B的对象。

查看其父类C,也没有该变量的定义。

唯一怀疑之处是其父类C的构造函数,该函数有一个参数,这个参数是另外一个类D的对象,类D有个成员变量data,是个数组,那个类B的对象是这个数组里的一个元素。

也就是说派生类A直接把类D对象的data数组中的元素当成了成员变量,百思不得其解啊。

难道是php的特性?

于是自己写了一个类似的代码,却发现运行报错,报告变量未定义。

仔细检查了下,发现父类C还有两个比较奇怪的函数,代码如下

public 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); }

之前看过一些php类的介绍,印象中以两个下划线开头的函数应该和类的结构有关,上php官网查了下这两个函数,豁然开朗。

在给未定义的变量赋值时,__set() 会被调用。

读取未定义的变量的值时,__get() 会被调用。

好吧,孤陋寡闻了。。。。。。蹲墙角继续看代码去。。。。。。

有关php中的类的一些记录
Share this