PHP5与面向对象(学习中)

来源:互联网 发布:单片机各种线介绍 编辑:程序博客网 时间:2024/06/05 09:12

PHP5 的对象模型

PHP5有一个单重继承的,限制访问的,可以重载的对象模型。

PHP5的对象模型把对象看成与任何其它数据类型不同,通过引用来传递。PHP不要求你通过引用(reference)显性传递和返回对象。在本章的最后将会详细阐述基于引用的对象模型。

在PHP的前几个版本中,脚本默认复制对象.现在PHP5只移动句柄,需要更少的时间.

对象传递

PHP5使用了Zend引擎II,对象被储存于独立的结构Object Store中,而不像其它一般变量那样储存于Zval中(在PHP4中对象和一般变量一样存储于Zval)。在Zval中仅存储对象的指针而不是内容(value)。当我们复制一个对象或者将一个对象当作参数传递给一个函数时,我们不需要复制数据。仅仅保持相同的对象指针并由另一个zval通知现在这个特定的对象指向的Object Store。由于对象本身位于Object Store,我们对它所作的任何改变将影响到所有持有该对象指针的zval结构----表现在程序中就是目标对象的任何改变都会影响到源对象。.这使PHP对象看起来就像总是通过引用(reference)来传递,因此PHP中对象默认为通过“引用”传递,你不再需要像在PHP4中那样使用&来声明。

 垃圾回收机制

PHP 可以自动进行内存管理,清除不再需要的对象。PHP使用了引用计数(reference counting)这种单纯的垃圾回收(garbage collection)机制。每个对象都内含一个引用计数器,每个reference连接到对象,计数器加1。当reference离开生存空间或被设为 NULL,计数器减1。当某个对象的引用计数器为零时,PHP知道你将不再需要使用这个对象,释放其所占的内存空间。

原创粉丝点击