Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当第一个类被实例化而不使用构造函数时,是否可以实例化第二个类?_Php_Oop - Fatal编程技术网

Php 当第一个类被实例化而不使用构造函数时,是否可以实例化第二个类?

Php 当第一个类被实例化而不使用构造函数时,是否可以实例化第二个类?,php,oop,Php,Oop,很抱歉,标题措词不当。我对面向对象的PHP了解不多,所以我想不出更好的标题(或者我的问题的答案!) 好的,我有这样的东西: Class foo{ var $hello; function foo(){ } } Class customfoo extends foo{ //No Constructor } Class customfoo extends foo{ var $custom; function __construct(){

很抱歉,标题措词不当。我对面向对象的PHP了解不多,所以我想不出更好的标题(或者我的问题的答案!)

好的,我有这样的东西:

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

Class customfoo extends foo{
    //No Constructor
}
Class customfoo extends foo{
    var $custom;
    function __construct(){
        parent::__construct();
        $this->custom = new customclass();
    }
}
现在,我编写了另一个类,我们称它为
customclass
,我想在
customfoo
类中使用它。但是,我不只是想在
customfoo
类中使用它,我希望在创建
customfoo
类后立即创建它

通常情况下,我想,你只需要使用构造函数,比如:

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

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

首先,您应该将您的constructor命名为
\u construct

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

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

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

首先,您应该将您的constructor命名为
\u construct

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

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

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

在PHP中,类的构造函数是
\uu construct()
。使用与构造函数同名的函数是不可取的,并且只适用于向后兼容。你不应该再使用它了。@vascowhite是的,我不打算。我正在编写的代码已经是这样写的,所以我下意识地复制了它。在PHP中,类的构造函数是
\uu construct()
,这可能会有所帮助。使用与构造函数同名的函数是不可取的,并且只适用于向后兼容。你不应该再使用它了。@vascowhite是的,我不打算。我正在编写的代码已经是这样写的,所以我下意识地复制了它。这可能会有帮助哦,是的,你对
\u构造的看法是正确的。代码已经编写好了,所以我保持原样。至于你的解决方案,嗯,那很有趣。那么,嗯,父类是一个关键字,还是我把父类的名称放在那里?不,父类是一个保留关键字。您可以在php手册中找到更多信息:@zermy看起来您应该阅读这本书或一本关于php的OOP的好书/网站。有很多很好的教程。哦,是的,你对
\u构造的理解是正确的。代码已经编写好了,所以我保持原样。至于你的解决方案,嗯,那很有趣。那么,嗯,父类是一个关键字,还是我把父类的名称放在那里?不,父类是一个保留关键字。您可以在php手册中找到更多信息:@zermy看起来您应该阅读这本书或一本关于php的OOP的好书/网站。有很多很好的教程。