PHP对象模型深度探索[PHP专题]

80酷酷网    80kuku.com

  

  面向对象编程是软件开发理论的一大进步,在此之前,大型应用软件项目是非常困难的,特别是那种源代码数十万行多人合作的项目,每一个改动都可能导致很多副作用产生,每个功能模块之间都可能导致其他模块出现错误。而在面向对象编程中,模块被组织成一个个对象。这些对象拥有方法和属性,从抽象的角度来看,方法是一个对象的所做的动作,而属性是对象的特性。从编程角度来看,方法就是函数而属性是变量。在一个理想化的面向对象体系中,每个部份都是一个对象,体系由对象及对象间通过方法来形成的联系构成。

  每种语言提供了不同的途径来访问对象,最初设计PHP的时候,甚至PHP3被开发出时,PHP并不打算提供开发超过10万行代码的大型项目的能力。随着PHP和Zend引擎的发展,开发大型项目变得有可能,但无论你的项目规模多大,用类来书写你的脚本将可以让代码实现重用。

  起步
  PHP5的对象模型把对象看成与任何其它数据类型不同,通过引用来传递. PHP不要求你通过引用(reference)显性传递和返回对象。 

  定义一个类
  在声明一个类的时候需要列出对象应有的所有变量和所有函数,这些变量和函数也被称为属性和方法。 

  构造函数和析构函数
  继承是类的一个强大功能。一个类(子类/派生类)可以继承另一类(父类/基类)的功。派生类将包含有基类的所有属性和方法,并可以在派生类中加上其他属性和方法。 

  对象复制
  PHP5中的对象模型通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本。为了这样的目的,PHP定义了一个特殊的方法,称为__clone。 

  访问属性和方法
  一个对象实例的属性是变量,就像PHP的其他变量一样。但是你必须使用->运算符来引用它们。不需要在属性前使用美元符$。 

  类的静态成员
  类的静态成员与一般的类成员不同: 静态成员与对象的实例无关,只与类本身有关。他们用来实现类要封装的功能和数据,但不包括特定对象的功能和数据,静态成员包括静态方法和静态属性。 

  访问方式
  PHP5的访问方式允许限制对类成员的访问。这是在PHP5中新增的功能,但在许多面向对象语言中都早已存在。有了访问方式,才能开发一个可靠的面向对象应用程序,并且构建可重用的面向对象类库。 

  绑定
  在计算机语言中有两种主要的绑定方式—静态绑定和动态绑定。静态绑定发生于数据结构和数据结构间,动态绑定则针对运行期产生的访问请求,只用到运行期的可用信息。 

  抽象方法和抽象类
  面向对象程序通过类的分层结构构建起来,在单重继承语言如PHP中, 类的继承是树状的。 

  重载
  PHP4中已经有了重载的语法来建立对于外部对象模型的映射,就像Java和COM那样. PHP5带来了强大的面向对象重载,允许程序员建立自定义的行为来访问属性和调用方法。 

  对象串行化
  串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据。 

  Zend引擎的发展
  当1997年夏天,发布的PHP3中没有计划要使PHP具备面向对象的能力,当时没有任何与类和对象有关的想法,PHP3是一个纯粹面向过程的语言。 

  其它特性
  大家都知道,PHP是一种弱类型的语言。在使用变量前不需要定义,不需要声明变量的数据类型。这在编程中带来很多便利,但也带了一些隐患,特别当变量的类型变化时。 



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: