很多人說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.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97