PHP5.0对象模型探索之Zend引擎的发展

     在这个系列文章的最后一部分,作者讨论了Zend引擎带来的对象模型,特别提到它与PHP的前几个版本中的模型有什么不同。  当1997年夏天,发布的PHP3中没有计划要使PHP具备面向对象的能力. 当时没有任何与类和对象有关的想法. PHP3是一个纯粹面向过程的语言. 但是,在1997.8.27的晚上PHP3 alpha版中增加了对类的支持. 增加一个新特性给P...|-|6<span class="readmore"><a href="http://dengrui.me/em/?post=1503">阅读全文&rarr;</a></span>

Deri 发布于 2008-05-31 17:33

PHP5.0对象模型探索之对象串行化

     串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据。你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行。为了这样的目的,PHP会自动寻找__sleep和__wakeup方法。  当一个对象被串行化,PHP会调...|-|6<span class="readmore"><a href="http://dengrui.me/em/?post=1502">阅读全文&rarr;</a></span>

Deri 发布于 2008-05-31 17:33

PHP5.0对象模型探索之重载

     PHP4中已经有了重载的语法来建立对于外部对象模型的映射,就像Java和COM那样. PHP5带来了强大的面向对象重载,允许程序员建立自定义的行为来访问属性和调用方法。  重载可以通过__get, __set, and __call几个特殊方法来进行. 当Zend引擎试图访问一个成员并没有找到时,PHP将会调用这些方法.  在下面的例子中,__get和__s...|-|6<span class="readmore"><a href="http://dengrui.me/em/?post=1501">阅读全文&rarr;</a></span>

Deri 发布于 2008-05-31 17:33

PHP5.0对象模型探索之抽象方法和抽象类

     面向对象程序通过类的分层结构构建起来,在单重继承语言如PHP中, 类的继承是树状的. 一个根类有一个或更多的子类,再从每个子类继承出一个或更多下一级子类. 当然,可能存在多个根类,用来实现不同的功能. 在一个良好设计的体系中,每个根类都应该有一个有用的接口, 可以被应用代码所使用. 如果我们的应用代码被设计成与根类一起工作,那么它也可以和任何一个从根类继承出...|-|6<span class="readmore"><a href="http://dengrui.me/em/?post=1500">阅读全文&rarr;</a></span>

Deri 发布于 2008-05-31 17:33

PHP 5.0对象模型深度探索之绑定

     除了限制访问,访问方式也决定哪个方法将被子类调用或哪个属性将被子类访问. 函数调用与函数本身的关联,以及成员访问与变量内存地址间的关系,称为绑定。  在计算机语言中有两种主要的绑定方式―静态绑定和动态绑定。静态绑定发生于数据结构和数据结构间,程序执行之前. 静态绑定发生于编译期, 因此不能利用任何运行期的信息。它针对函数调用与函数的主体,或变量与...|-|6<span class="readmore"><a href="http://dengrui.me/em/?post=1499">阅读全文&rarr;</a></span>

Deri 发布于 2008-05-31 17:33

PHP 5.0对象模型深度探索之访问方式

     PHP5的访问方式允许限制对类成员的访问。这是在PHP5中新增的功能,但在许多面向对象语言中都早已存在。有了访问方式,才能开发一个可靠的面向对象应用程序,并且构建可重用的面向对象类库。  像C++和Java一样,PHP有三种访问方式:public,private和protected. 对于一个类成员的访问方式,可以是其中之一. 如果你没有指明访问方式,默认地...|-|6<span class="readmore"><a href="http://dengrui.me/em/?post=1498">阅读全文&rarr;</a></span>

Deri 发布于 2008-05-31 17:33

PHP 5.0对象模型深度探索之类的静态成员

     类的静态成员与一般的类成员不同: 静态成员与对象的实例无关,只与类本身有关。他们用来实现类要封装的功能和数据,但不包括特定对象的功能和数据,静态成员包括静态方法和静态属性。  静态属性包含在类中要封装的数据,可以由所有类的实例共享。实际上,除了属于一个固定的类并限制访问方式外,类的静态属性非常类似于函数的全局变量。  我们在下例中使用了一个静态属性Count...|-|6<span class="readmore"><a href="http://dengrui.me/em/?post=1497">阅读全文&rarr;</a></span>

Deri 发布于 2008-05-31 17:33

PHP 5.0对象模型深度探索之属性和方法

     一个对象实例的属性是变量,就像PHP的其他变量一样。但是你必须使用->运算符来引用它们。不需要在属性前使用美元符$。  可以联用->,如果一个对象的属性包含了一个对象,你可以使用两个->运算符来得到内部对象的属性. 你甚至可以用双重引用的字符串来放置这些表达式. 下面的例子中,对象House中的属性room包含了一组Room对象。  访问方法和访问属性类似。...|-|6<span class="readmore"><a href="http://dengrui.me/em/?post=1496">阅读全文&rarr;</a></span>

Deri 发布于 2008-05-31 17:33

PHP 5.0对象模型深度探索之对象复制

     PHP5中的对象模型通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 . 为了这样的目的,PHP定义了一个特殊的方法,称为__clone. 像__construct和__destruct一样,前面有两个下划线。  默认地,用__clone方法将建立一个与原对象拥有相同属性和方法的对象. 如果你想在克隆时改变默认的内容...|-|6<span class="readmore"><a href="http://dengrui.me/em/?post=1495">阅读全文&rarr;</a></span>

Deri 发布于 2008-05-31 17:33

PHP 5.0对象模型深度探索之构造和析构

     如果你在一个类中声明一个函数,命名为__construct,这个函数将被当成是一个构造函数并在建立一个对象实例时被执行。清楚地说,__是两个下划线。就像其它任何函数一样,构造函数可能有参数或者默认值. 你可以定义一个类来建立一个对象并将其属性全放在一个语句(statement)中。  你也可以定义一个名为__destruct的函数,PHP将在对象被销毁前调用...|-|6<span class="readmore"><a href="http://dengrui.me/em/?post=1494">阅读全文&rarr;</a></span>

Deri 发布于 2008-05-31 17:33