很多人说php4不能支持函数重载

发表于:2007-05-25来源:作者:点击数: 标签:php4不能人说很多支持
很多人说php4不能支持函数重载,但是并非如此,先看一下例子: 我记得有人说过“关键是人本身的思想,不是说你熟悉了C++、Rose就能够做出好的设计,相反如果你具备了很高的素质,你可以用C写出比别人用C++更加模块化的程序。” 我很同意这种说法~~看看*nix 我

很多人说php4不能支持函数重载,但是并非如此,先看一下例子:
我记得有人说过 “关键是人本身的思想,不是说你熟悉了C++、Rose就能够做出好的设计,相反如果你具备了很高的素质,你可以用C写出比别人用C++更加模块化的程序。”
我很同意这种说法~~看看 *nix
我用了那么久 的 php 觉得它有点像 c ,可以说 c 什么都不能做(如果你想像 java 那样有大量的class 的话),但它什么都能做,主要是看你怎么用,它给你很大的自由.

[code:1:7c1e1f17c0]
<?php
############################
#PHP 重载
############################
class 测试类{
//================================
function 测试类(){//构造函数
$参数个数 =func_num_args();
$参数列表 = func_get_args();
switch ($参数个数){
    case 0: $this->构造函数0(); break;
case 1:  $this->构造函数1($参数列表[0]);break;
case 2:  $this->构造函数2($参数列表[0],$参数列表[1]);break;
case 3:  $this->构造函数3($参数列表[0],$参数列表[1],$参数列表[2]);break;    
}
}
//=============Function End ===========
//================================
function 构造函数0(){
printf("我是构造函数0");
}
//=============Function End ===========
//================================
function 构造函数1($参数1){
printf($参数1);
}
//=============Function End ===========
//================================
function 构造函数2($参数1,$参数2){
printf($参数1.$参数2);
}
//=============Function End ===========
//================================
function 构造函数3($参数1,$参数2,$参数3){
printf($参数1.$参数2.$参数3);
}
//=============Function End ===========
}

$测试 = new 测试类();
echo "<br>";
$测试1 = new 测试类("这是2吧!"," 是2不错");
echo "<br>";
$测试2 = new 测试类("这是2吧!"," 是2不错!","  错~~是3");
echo "<br>";
############################
?>
[/code:1:7c1e1f17c0]

 夜猫子 回复于:2003-10-28 12:40:02
有创意,我想想看还能不能再发挥

 longnetpro 回复于:2003-10-29 09:48:03
其实有一个最通用的办法

function construct($args = null){
  if($args === null) {null constructor; return something;}
  if(!is_array($args)){ do... something ...; return something;}
  $argc = count($args);
  switch($argc){
    case 1: do something 1; break;
    case 2: do something 2; break;
    default: do default; break;
  }
   return something;
}


然后还可以对参数判断类型等等。都没有什么问题的。
其实PHP也有自己重载的方法,不过用起来有点烦,而且我认为安全性不好,因此我不用它,一般我都用上面我写的办法。

 wubai 回复于:2003-10-29 17:23:48
[quote:f4829cfc97="longnetpro"]其实有一个最通用的办法

function construct($args = null){
  if($args === null) {null constructor; return something;}
  if(!is_array($args)){ do... something ...; return something;}
  $argc = coun..........[/quote:f4829cfc97]

我也觉得这样不错,使用默认值。

 geel 回复于:2003-10-30 13:17:06
不错不错
php发展的已经快可以跟jsp媲美了

 wubai 回复于:2003-10-30 16:58:42
[quote:8d87f08872="geel"]不错不错
php发展的已经快可以跟jsp媲美了[/quote:8d87f08872]



 呵呵!! 只不过是表面形式而已!

 tonera 回复于:2003-10-30 18:10:42
个人觉得jsp是航空母舰!

 geel 回复于:2003-10-31 08:12:29
php5.0已经开始支持很多特性了。赫赫。

不过不希望像jsp那样纯面向对象

看着 i.toString 就别扭,呵呵,虽然代码写出来很好看。

简单而强大应该是php这么风靡的原因吧?

原文转自:http://www.ltesting.net