PHP实现多构造的类

有时候实例化类时,需要根据构造方法的参数个数进行初始化不用的内容,这有点像php函数或方法的可选参数

<?php   
class A {   
    public function __construct() {   
        $a = func_get_args();   
        $i = func_num_args();   
        if (method_exists($this,$f='__construct'.$i)) {   
            call_user_func_array(array($this,$f),$a);   
        }   
    }   
      
    public function __construct1($a1) {   
        echo '__construct with 1 param called: '.$a1.PHP_EOL;   
    }   
      
    public function __construct2($a1,$a2) {   
        echo '__construct with 2 params called: '.$a1.','.$a2.PHP_EOL;   
    }   
      
    public function __construct3($a1,$a2,$a3) {   
        echo '__construct with 3 params called: '.$a1.','.$a2.','.$a3.PHP_EOL;   
    }   
}   
$o = new A('sheep');   
$o = new A('sheep','cat');   
$o = new A('sheep','cat','dog');   
  
// 结果:   
// __construct with 1 param called: sheep   
// __construct with 2 params called: sheep,cat   
// __construct with 3 params called: sheep,cat,dog   
?>   

转自: http://luochangzhi.iteye.com/blog/1604523

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值