posts - 9,comments - 21,trackbacks - 0
通用方法:(使用参数的默认值实现)
<?php
class myclass
{
    
var $name;
    
var $age;
    
function myclass($name_="", $age_=23)
    {
        
$this -> name = $name_;
        
$this -> age = $age_;
    }
    
function showinfo($obj)
    {
        
echo "<div>\$".$obj." -> name = ". $this -> name.";\$".$obj." -> age=".$this -> age."</div>" ;
    }
}

$myfun = new myclass();
$myfun -> showinfo("myfun");
$myfun1 = new myclass("张三");
$myfun1 -> showinfo("myfun1");
$myfun2 = new myclass("李四",25);
$myfun2 -> showinfo("myfun2");
?>

另一种方式(使用系统函数实现)

<?php
//函数重载

class myfun
{
    
var $name;
    
var $age;
    
function myfun1($name_)
    {
        
$this -> name = $name_;
        
$this -> age = 23;
    }
    
function myfun2($name_, $age_)
    {
        
$this -> name = $name_;
        
$this -> age = $age_;
    }
    
function myfun()
    {
        
$args_num = func_num_args(); //获取参数个数
        $args = func_get_args(); //获取参数列表
        
        
switch($args_num)
        {
            
case 1:
                
$this -> myfun1($args[0]);
                
break;
            
case 2:
                
$this -> myfun2($args[0], $args[1]);
                
break;
            
default:
                
$this -> name = "";
                
$this -> age = 23;
                
break;
        }
    }
    
function showinfo($obj)
    {
        
echo "<div>\$".$obj." -> name = ". $this -> name.";\$".$obj." -> age=".$this -> age."</div>" ;
    }
}

$myfun = new myfun();
$myfun -> showinfo("myfun");
$myfun1 = new myfun("张三");
$myfun1 -> showinfo("myfun1");
$myfun2 = new myfun("李四",25);
$myfun2 -> showinfo("myfun2");
?>
posted on 2006-04-24 08:52 蕃豆仁 阅读(3617) 评论(13)  编辑 收藏 引用 所属分类: PHP自学之路

FeedBack:
# re: PHP的函数重载
2007-08-11 22:29 | Jennal
这不叫重载吧。。。  回复  更多评论
  
# re: PHP的函数重载
2008-03-25 15:54 | wh
晕, 楼主知道什么叫做函数重载吗??  回复  更多评论
  
# re: PHP的函数重载
2008-03-31 12:09 | wqh
是呀!这那叫重载呀  回复  更多评论
  
# re: PHP的函数重载
2008-05-04 08:45 | dfghdf
这么低级的水平居然在此卖弄风骚?  回复  更多评论
  
# re: PHP的函数重载
2008-09-10 18:23 | PHPER
PHP本身是不支持函数重载的,但是楼主的写法是使用相近的方法实现函数重载撒~!哥哥们 你们看懂了么有,就乱乱的叫着~  回复  更多评论
  
# re: PHP的函数重载
2009-03-15 09:16 | 感觉
PHP不支持这样的重载也没必要这样写啊。。。有办法做系统函数的重载没?  回复  更多评论
  
# re: PHP的函数重载
2010-09-28 16:23 | Loning
先回复的几个二连重载跟重写都不懂就喷人,真无语  回复  更多评论
  
# re: PHP的函数重载
2011-06-01 14:31 | 飘过
PHP的重载不就是这样么?!

前面几楼写过PHP的重载函数么?  回复  更多评论
  
# re: PHP的函数重载
2011-10-18 20:26 | 留名多余
这样写重载,还要搞类有个毛用呀
几个过程函数 一判断就OK了,
不知道重载去看C++去
这要叫重载,C++就是成扯淡了
这也不是重载的思想;
我用1个函数给你实现下子
function ABC ($a=23,$b=0){
$str[]=$a;
$str[]=23;
if($b==0) return $str;
else{
$str[1]=$b;
return $str;
}
}  回复  更多评论
  
# re: PHP的函数重载
2011-10-18 20:28 | 留名多余
叫重载不敢;我是一个函数实现你上面那一堆东西;比你的new节省的资源多了@留名多余
  回复  更多评论
  
# re: PHP的函数重载
2011-10-18 20:35 | 留名多余
上面那个都写繁琐了
function ABC ($a=23,$b=0){
$str[]=$a;
$str[]=23;
if($b!==0)
$str[1]=$b;
return $str;
}
var_dump( ABC(25));
var_dump(ABC (25,'重载思想不成熟'));
  回复  更多评论
  
# re: PHP的函数重载
2012-03-27 11:59 | 战死街头
真心给楼主跪了.................  回复  更多评论
  
# re: PHP的函数重载
2013-04-13 22:49 | ichou
LZ 你还可以把 _call()搬出来写一个  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理