您的位置:首页网页设计PHP实例 → PHP的面向对象编程:开发大型PHP项目的方法二

PHP的面向对象编程:开发大型PHP项目的方法二

时间:2004/11/7 3:21:00来源:本站整理作者:蓝点我要评论(0)

作者:Luis Argerich 译者:limodou



  "Another"类的对象现在拥有了父类(Something)的全部的数据成员及方法,而且还加上了自已的数据成

员和方法。



  你可以使用

  $obj2=new Something;

  $obj2->setX(6);

  $obj2->setY(7);



  PHP现在还不支持多重继承,所以你不能从两个或两个以上类派生出新的类来。



  你可以在派生类中重定义一个方法,如果我们在"Another"类中重定义了getX方法,我们就不能使

用"Something"中的getX方法了。如果你在派生类中声明了一个与基派同名的数据成员,那么当你处理它时,

它将“隐藏”基类的数据成员。



  你可以在你的类中定义构造函数。构造函数是一个与类名同名的方法,当你创建一个类的对象时会被调

用,例如:



--------------------------------------------------------------------------------




class Something {

var $x;



function Something($y) {

$this->x=$y;

}



function setX($v) {

$this->x=$v;

}



function getX() {

return $this->x;

}

}



?>--------------------------------------------------------------------------------

  所以你可以创建一个对象,通过:



  $obj=new Something(6);



  构造函数会自动地把6赋值给数据变量x。构造函数和方法都是普通的PHP函数,所以你可以使用缺省参数。



  function Something($x="3",$y="5")



  接着:



  $obj=new Something(); // x=3 and y=5

  $obj=new Something(8); // x=8 and y=5

  $obj=new Something(8,9); // x=8 and y=9



  缺省参数使用C++的方式,所以你不能忽略Y的值,而给X一个缺省参数,参数是从左到右赋值的,如果 传入的参数少于要求的参数时,其作的将使用缺省参数。



  当一个派生类的对象被创建时,只有它的构造函数被调用,父类的构造函数没被调用,如果你想调用基 类的构造函数,你必须要在派生类的构造函数中显示调用。可以这样做是因为在派生类中所有父类的方法都 是可用的。



--------------------------------------------------------------------------------




function Another() {

$this->y=5;

$this->Something();

//显示调用基类构造函数

}



?>--------------------------------------------------------------------------------

  OOP的一个很好的机制是使用抽象类。抽象类是不能实例化,只能提供给派生类一个接口。设计者通常 使用抽象类来强迫程序员从基类派生,这样可以确保新的类包含一些期待的功能。在PHP中没有标准的方法, 但是:



  如果你需要这个特性,可以通过定义基类,并在它的构造函数后加上"die" 的调用,这样就可以保证基 类是不可实例化的,现在在每一个方法(接口)后面加上"die" 语句,所以,如果一个程序员在派生类中没有 覆盖方法,将引发一个错误。而且因为PHP 是无类型的,你可能需要确认一个对象是来自于你的基类的派生 类,那么在基类中增加一个方法来实义类的身份(返回某种标识id),并且在你接收到一个对象参数时校验 这个值。当然,如果一个邪恶不好的程序员在派生类中覆盖了这个方法,这种方法就不起作用了,不过一般 问题多发现在懒惰的程序员身上,而不是邪恶的程序员。



  当然,能够让基类对程序员无法看到是很好的,只要将接口打印出来做他们的工作就可以了。



  在PHP中没有析构函数。




相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 我的php文件怎么打开_php运算符怎么写 php 如何生成静态页面的函数PHP生成图片缩略图PHP session常见问题集锦及解决办法PHP实现同步远程Mysql

人气排行 DEDE在文章列表文章没有缩略图的不显示图片php+mysq修改用户密码我的php文件怎么打开_如何打开php文件的办法FCKeditor的配置和使用方法使用dedecms建站教程PHP+Ajax实现分页技术图片存储与浏览一例Linux+Apache+PHP+MySQLPHP生成图片缩略图