制,就不可能知道对象怎样使用其他对象,也就不可能在不知道要突破什么难关的情况下做任何更改。使用 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 迁移指南 - 凌众科技
快速业务通道
++++选择通道++++
国内服务器 厦门电信服务器 汕头电信服务器 温州电信服务器 厦门网通服务器 汕头双线服务器 美国服务器 欧洲服务器 美国KT机房服务器 美国FDC机房服务器 香港服务器 新加坡服务器 韩国服务器 台湾服务器 英国服务器 德国服务器 新加坡Qala机房服务器 香港机房服务器 法国服务器 江苏电信服务器 美国TB机房服务器 日本服务器 河北网通服务器 厦门软二服务器 台湾机房服务器 韩国机房服务器 美国ST机房服务器 江西电信服务器 其他机房服务器 菲律宾服务器 日本机房服务器 菲律宾机房服务器
国内大带宽
PHP V5 迁移指南
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-24
content
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
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 迁移指南 - 凌众科技
快速业务通道
++++选择通道++++
国内服务器 厦门电信服务器 汕头电信服务器 温州电信服务器 厦门网通服务器 汕头双线服务器 美国服务器 欧洲服务器 美国KT机房服务器 美国FDC机房服务器 香港服务器 新加坡服务器 韩国服务器 台湾服务器 英国服务器 德国服务器 新加坡Qala机房服务器 香港机房服务器 法国服务器 江苏电信服务器 美国TB机房服务器 日本服务器 河北网通服务器 厦门软二服务器 台湾机房服务器 韩国机房服务器 美国ST机房服务器 江西电信服务器 其他机房服务器 菲律宾服务器 日本机房服务器 菲律宾机房服务器
国内大带宽
PHP V5 迁移指南
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-24
content
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
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 没有这种功能,但您可以在应用程序中通过各种方式使用此功能。
接口机制的优点是可以将契约快速集中在一起而无须实现任何方法。最后阶段是实现接口,您必须实现所有