选择显示字体大小

转贴:开发大型php项目的方法(二)


    php类文章


php的面向对象编程
--------------------------------------------------------------------------------
开发大型php项目的方法(二)译者:limodou 2000年5月16日
作者:luis argerich 译者:limodou

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

你可以使用
$obj2=new something;
$obj2->setx(6);
$obj2->sety(7);

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

你可以在派生类中重定义一个方法,如果我们在"another"类中重定义了getx方法,我们就不能使 用"something"中的getx方法了。如果你在派生类中声明了一个与基派同名的数据成员,那么当你处理它时, 它将“隐藏”基类的数据成员。

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

class something {
var &#36;x;

function something(&#36;y) {
&#36;this->x=&#36;y;
}

function setx(&#36;v) {
&#36;this->x=&#36;v;
}

function getx() {
return &#36;this->x;
}
}

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

  &#36;obj=new something(6);

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

  function something(&#36;x=&quot;3&quot;,&#36;y=&quot;5&quot;)

  接着:

  &#36;obj=new something(); // x=3 and y=5
  &#36;obj=new something(8); // x=8 and y=5
  &#36;obj=new something(8,9); // x=8 and y=9

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

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

-----------------------------------------------------
<?php

function another() {
&#36;this->y=5;
&#36;this->something();
//显示调用基类构造函数
}

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

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

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

  在php中没有析构函数。
 


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons