不能这么定义 只能有一个

解决方案 »

  1.   

    class A { 
        var $a; 
        function __construct() { 
            $argc = func_num_args(); 
            $args = func_get_args(); 
    echo get_class($this)."<br>";//class C
            call_user_func_array(array($this,"__construct".$argc),$args); //这里的$this指向的是class C的实例化对象,因为C内有已经覆盖了父类的方法__construct1,所以调用的是C内的__construct1方法
         //call_user_func_array(array(__CLASS__,"__construct".$argc),$args);//这个才是调用类A的__construct1方法
    }     function __construct1($x) { 
            $this->a = $x; 
        } 
    } class B extends A{ 
        function __construct() { 
            $argc = func_num_args(); 
            $args = func_get_args(); 
            call_user_func_array(array($this,"parent::__construct"),$args); 
        } 
    } class C extends B { 
        function __construct() { 
            parent::__construct(3); 
        }     function __construct1($x) { 
    $this->a = 'hello world!';
        } 

    $o_test = new C(2); 
    echo $o_test->a; //hello world