高级PHP V5 对象研究

2016-01-29 15:24 13 1 收藏

高级PHP V5 对象研究,高级PHP V5 对象研究

【 tulaoshi.com - PHP 】

高级PHP V5 对象研究
本文介绍了PHP V5一些更高级的面向设计的特性。其中包括各种对象类型,它们允许将系统中的组件相互分离,创建可重用、可扩展、可伸缩的代码。


  领会暗示 

  首先介绍一下对象类型和类型提示的优点。一个类定义一种类型。从该类实例化的任何对象属于该类定义的类型。所以,使用 Car 类创建 Car 对象。如果 Car 类继承 Vehicle 超类,则 Car 对象还将是一个 Vehicle 对象。这反映了我们在现实世界中分类事物的方法。但正如您将看到的,类型不仅仅是分类系统元素的有用方法。类型是面向对象编程的基础,因为类型是良好一致的行为的保证。许多设计技巧来自该保证。

  “开始了解 PHP V5 中的对象”展示对象为您保证了接口。当系统传递 Dictionary 对象时,您可以确定它具有 $translations 数组和 summarize() 方法。相反,关联数组不提供相同级别的确定性。要利用类提供的清晰接口,需要知道您的对象实际上是 Dictionary 的一个实例,而不是某个 imposter。可以用 instanceof 操作符来手动验证这一点,该操作符是 PHP V5 引入的介于对象实例和类名之间的一个便捷工具。

   instanceof Dictionary

  如果给定对象是给定类的实例,则 instanceof 操作符解析为真。在调用方法中第一次遇到 Dictionary 对象时,可以在使用它之前检查它的类型。

if ( $en instanceof Dictionary ) {
 print $en-summarize();
}

  但是,如果使用 PHP V5 的话,可以将对象类型检查构建到类或方法声明中。

  在“开始了解 PHP V5 中的对象”中,重点介绍两个类:Dictionary,它存储术语和翻译, DictionaryIO,它将 Dictionary 数据导出(导入)自(至)文件系统。这些特性使得将 Dictionary 文件发送到第三方翻译器变得容易,第三方翻译器可以使用自己的软件来编辑数据。然后,您可以重新导入已处理的文件。清单 1 是 Dictionary 类的一个版本,它接受一个 DictionaryIO 对象,并将其存储以备将来使用。

  清单 1. 接受 DictionaryIO 对象的 Dictionary 类的一个版本

class Dictionary {
 public $translations = array();
 public $type ="En";
 public $dictio;

 function addDictionaryIO( $dictio ) {
  $this-dictio=$dictio;
 }

 function export() {
  if ( $this-dictio ) {
   $this-dictio-export( $this );
  }
 }
}

class DictionaryIO {
 function export( $dict ) {
  print "exporting dictionary data "."($dict-type)n";
 }
}

$en = new Dictionary();
$en-addDictionaryIO( new DictionaryIO() );
$en-export();

// output: 
// dumping dictionary data (En)

  DictionaryIO 类具有单个方法 export(),它接受一个 Dictionary 对象,并使用它来输出假消息。现在,Dictionary 具有两个新方法:addDictionaryIO(),接受并存储 DictionaryIO 对象; export(),使用已提供的对象导出 Dictionary 数据 —— 或者是在完全实现的版本中。

  您可能会疑惑为什么 Dictionary 对象不仅实例化自己的 DictionaryIO 对象,或者甚至在内部处理导入导出操作,而根本不求助于第二个对象。一个原因是您可能希望一个 DictionaryIO 对象使用多个 Dictionary 对象,或者希望存储该对象的单独引用。另一个原因是通过将 DictionaryIO 对象传递给 Dictionary,可以利用类切换或 多态性。换句话说,可以将 DictionaryIO 子类(比如 XmlDictionaryIO)的实例传递给 Dictionary,并更改运行时保存和检索数据的方法。

  图 1 显示了 Dictionary 和 DictionaryIO 类及其使用关系。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

正如所显示的,没有什么阻止编码器将完全随机的对象传递给 addDictionaryIO()。只有

来源:https://www.tulaoshi.com/n/20160129/1495818.html

延伸阅读
标签: Android
Android 4.4版MIUI V5简单评测   版本号的变化 首先当然是版本号了,更新后的MIUI依然是V5版本,但在关于手机里,我们能看到Android版本号已经由支持的4.3变为了4.4.2,也就是升级之后最大的好处,能完全兼容Android 4.4的应用软件。   左为Android 4.3版MIUI V5,右为Android 4.4版MIUI V5 例如,Google刚...
标签: 智能手机
64位CPU+2GB运存+双卡 随着“4G酷跑”计划正式开跑,中兴旗下的4G手机可谓层出不穷,其中不乏有一些主打高性价的产品。作为中兴首批“互联网思维”产品,不到千元中兴V5系列深得年轻人喜欢,尤其是主打拍照以及双卡特性。 如今,中兴V5新品的发布再次对千元级手机市场发起了冲击,其中5.5英寸的中兴V5 Max是目前V5系列...
标签: PHP
  文/朱先忠编译     一、简介 很幸运,PHP 5.0中引入了对象重载技术。本文将探讨对于方法__call(),__set()以及__get()进行重载的可能性。在对重载理论作简单介绍后,我们将通过两个例子直奔主题:第一例,实现持续存储类;第二例,找到一种实现动态的getter/setter的方法。 二、什么是对象重载? ...
标签: Web开发
* 本文是对《Classes and Objects in PHP5》系列文章的补充和修正,介绍了PHP5对象体系的总体框架,但有些特性没有具体介绍。强烈建议在读过《Classes and Objects in PHP5》后阅读本文。 PHP5推出的对象体系相信是大家最为期待的。PHP5借鉴了Java2的对象模型,提供了较为强大的面向对象编程支持,使用PHP来实现OO将变得轻松和自然。 ...
标签: 智能手机
开启裸眼3D新视界 随着几年前电影阿凡达热映,3D电影闯入了人们的生活,人们喜爱这种新颖、震撼的观影感受,不过受限于笨重的眼镜以及场景,人们仅能到电影院中才能感受到震撼3D视觉效果。但是短短几年后,康得新将这一效果移植到了手机屏幕上,裸眼3D再也不需要用户佩戴笨重的眼镜,可谓在如今功能单一同质化严重的手机市场开辟了一条新的道路...

经验教程

138

收藏

21
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部