很多人说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
|