高级PHP V5 对象研究

宁宁可爱多1

宁宁可爱多1

2016-01-29 15:24

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

高级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://m.tulaoshi.com/php/)

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

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

展开更多 50%)
分享

猜你喜欢

高级PHP V5 对象研究

PHP
高级PHP V5 对象研究

开始了解 PHP V5 中的对象

PHP
开始了解 PHP V5 中的对象

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

PHP V5 迁移指南

Web开发
PHP V5 迁移指南

CATIA V5安装教程

电脑网络
CATIA V5安装教程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

MIUI V5 UI设计欣赏

平面设计 标志设计 UI设计 VI设计
MIUI V5 UI设计欣赏

(RFC1928)SOCKS V5

编程语言 网络编程
(RFC1928)SOCKS V5

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

在Linux下安装PHP,APACHE,MYSQL,PERL的方法

在Linux下安装PHP,APACHE,MYSQL,PERL的方法

如何在PHP中判断某个函数是否被支持

如何在PHP中判断某个函数是否被支持
下拉加载更多内容 ↓