快速业务通道

PHP V5 迁移指南

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-24
制,就不可能知道对象怎样使用其他对象,也就不可能在不知道要突破什么难关的情况下做任何更改。使用 C++,至少我还有编译程序可用。PHP 没有配备编译程序,因此这类访问控制变得愈加重要。

契约编程

从 PHP V4 迁移到 PHP V5 时要利用的下一个重要特性是支持通过接口、抽象类和方法进行契约编程。清单 6 显示了一个版本的 Configuration 类,在该类中 PHP V4 编码人员尝试了构建基本接口而根本不使用 interface 关键字。


清单 6. interface.php4

<?php
class IConfiguration
{
  function get( $key ) { }
}

class Configuration extends IConfiguration
{
  var PHP V5 迁移指南 - 凌众科技

快速业务通道

PHP V5 迁移指南

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-24
content

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号

items = array();

  function Configuration() {
    $this->load();
  }
  function load() { }
  function get( $key ) {
    return $this->_items[ $key ];
  }
}

class DBConfiguration extends Configuration
{
  function load() {
    $this->_items[ ''imgpath'' ] = ''images'';
  }
}

$c = new DBConfiguration();
echo( $c->get( ''imgpath'' )."\n" );
?>
 


清单开始于一个小型 IConfiguration 类,该类定义所有 Configuration 类或派生类所提供的接口。此接口将在类与其所有使用者之间定义契约。契约声明了实现 IConfiguration 的所有类必须配有 get() 方法并且 IConfiguration 的所有使用者都必须坚持仅使用 get() 方法。

下面的这段代码是在 PHP V5 中运行的,但最好使用提供的接口系统,如下所示。


清单 7. interface1.php5

<?php
interface IConfiguration
{
  function get( $key );
}

class Configuration implements IConfiguration
{
  ...
}

class DBConfiguration extends Configuration
{
  ...
}

$c = new DBConfiguration();
echo( $c->get( ''imgpath'' )."\n" );
?>
 


一方面,读者可以更清楚地了解运行状况;另一方面,单个类可以实现多个接口。清单 8 显示了如何扩展 Configuration 类来实现 Iterator 接口,对于 PHP 来说,该接口是内部接口。


清单 8. interface2.php5

<?php
interface IConfiguration {
  ...
}

class Configuration implements IConfiguration, Iterator
{
  private PHP V5 迁移指南 - 凌众科技

快速业务通道

PHP V5 迁移指南

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-24
content

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号

items = array();

  public function __construct() {
    $this->load();
  }
  protected function load() { }
  protected function add( $key, $value ) {
    $this->_items[ $key ] = $value;
  }
  public function get( $key ) {
    return $this->_items[ $key ];
  }

  public function rewind() { reset($this->_items); }
  public function current() { return current($this->_items); }
  public function key() { return key($this->_items); }
  public function next() { return next($this->_items); }
  public function valid() { return ( $this->current() !== false ); }
}

class DBConfiguration extends Configuration {
  ...
}

$c = new DBConfiguration();
foreach( $c as $k => $v ) { echo( $k." = ".$v."\n" ); }
?>
 


Iterator 接口使所有类都可以看似是其使用者的阵列。正如您在脚本末尾看到的那样,您可以使用 foreach 运算符重申 Configuration 对象中的所有配置项。PHP V4 没有这种功能,但您可以在应用程序中通过各种方式使用此功能。

接口机制的优点是可以将契约快速集中在一起而无须实现任何方法。最后阶段是实现接口,您必须实现所有

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号