快速业务通道

研发大型PHP项目的方法

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-24
g(); // 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一个缺省参数,参数是从左到右赋值的,如果
传入的参数少于需求的参数时,其作的将使用缺省参数。

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

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

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

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

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

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

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

  在php中没有析构函数。
 重载(和覆盖不同)在php中不支持。在oop中,你能重载一个方法来实现两个或重多的方法具有相同
的名字,不过有不同数量或类型的参数(这要看语言)。php 是一种松散类型的语言,所以通过类型重载不
起作用,然而通过参数的个数不同来重载也不起作用。

  有时在oop中重载构造函数非常好,这样你能通过不同的方法创建对象(传递不同数量的参数)。在php
中实现他的技巧是:

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

class myclass {
function myclass() {
$name="myclass".func_num_args();
$this->$name();

//注意$this->name()一般是错误的,不过在这里$name是个将被调用方法的名字
}
function myclass1($x) {
code;
}
function myclass2($x,$y) {
code;
}
}

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

  通过在类中的额外的处理,使用这个类对用户是透明的:

   $obj1=new myclass(1); //将调用myclass1

  $obj2=new myclass(1,2); //将调用myclass2


  有时这个非常好用。

待续...


  •  

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号