当第一个类在不使用构造函数的情况下实例化时,是否可以实例化第二个类?

时间:2011-12-01 20:31:30

标签: php oop

抱歉,标题错误。我不太了解面向对象的PHP,所以,我无法想出一个更好的标题(或者我的问题的答案!)。

好的,我有类似的东西:

Class foo{
    var $hello;
    function foo(){
    }
}

Class customfoo extends foo{
    //No Constructor
}

现在,我写了另一个类,我们称之为customclass,我想在customfoo类中使用它。但是,我不只是想在customfoo类中使用它,我希望在创建customfoo类后立即创建它。

通常,我认为,你只需要使用构造函数,例如:

 Class customfoo extends foo{
    var $custom;
    function customfoo(){
        $this->custom = new customclass();   
    }
}

但是,customfoo是一个子类,所以,我认为构造函数会替换父类的构造函数,我不希望这种情况发生。那么,如何在customclass首次启动时创建课程customfoo?我想,我可以写一个任意函数并通过其他函数调用它(我确信它会在早期执行),但至少知道如何执行上述操作会很好。

1 个答案:

答案 0 :(得分:3)

首先,您应该将您的counstructors命名为__construct

正如您所指出的,您编写的构造函数将覆盖父级的构造函数,但您始终可以从子类中调用它,如下所示:

Class customfoo extends foo{
    var $custom;
    function __construct(){
        parent::__construct();
        $this->custom = new customclass();
    }
}