深刻理解的stdClass类从PHP源代码

深刻理解的stdClass类从PHP源代码
在百度百科,stdClass的定义如下:
复制代码代码如下所示:
StdClass开始是流行在PHP5,stdClass也是一个zend.stdclass预订类是一个PHP基类。
所有类几乎都继承这个类,所以可以随时使用新的方法使这个变量成为对象,
这是基本的类,这是一个特殊的地方,是没有办法的办法。新的stdClass任何变量(),
这是不可能使用美元->测试()这样的PHP5的对象的唯一性,对象是所谓的地方。
它们都是指地址类型,所以相对消耗的资源会少一些,当另一个页面分配给它时,它直接被修改,而不是拷贝。

最上面的定义是正确的,但致命的诊断错误,stdClass是PHP基础班。几乎所有类都继承这个类:
复制代码代码如下所示:
类emptyclass {

}

对象=新EmptyClass(美元);
如果($对象实例的stdClass){
echo'yes;
其他{ }
echo'no;
}
执行代码和出口没有,这个例子充分说明stdClass类不是所有类的基类,它仅仅是一个保留类PHP,或者角色如strlen函数。我们看看从源代码尺寸的stdClass类的实现,这是在Zend / zend_buildin_functions注册。C文件,如下:

复制代码代码如下所示:
zend_minit_function(核心){ / / *
zend_class_entry class_entry;

注册stdClass / * * /
init_class_entry(class_entry stdClass,
zend_standard_class_def = zend_register_internal_class(class_entry tsrmls_cc);

注册/默认类接口,如异常,SPL等。
zend_register_default_classes(tsrmls_c);

返回成功;
}
这是zend_builtin_module模块初始化函数。当模块的初始化操作在PHP内核进行的,它会自动加载功能,所以这类登记操作stdClass的也将被执行。你可以看到这个代码的stdClass类没有成员变量或成员方法。它所有的神奇的方法,父类,接口,等等都设置为null时,初始化。因为在PHP中,我们不能动态的类添加方法,那么这个类只能用于处理动态属性,这也是一个常见的用法。

总结:

这是一个内部类stdClass类保留PHP。开始时没有成员变量,也没有成员方法。所有的魔术方法设置为null,可以用来传递变量参数,但是没有办法给他们打电话,stdClass类可以继承,但它不会做任何意义。

tag:源代码深刻电脑软件phpStdClass

相关内容