加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

是否有可能抽象类强制它的子项在PHP中有一个构造函数?

发布时间:2020-12-13 22:44:13 所属栏目:PHP教程 来源:网络整理
导读:我想做这样的事情: abstract class Foo{ public function __construct() { echo 'This is the parent constructor'; } abstract function __construct();}class Bar extends Foo{ // constructor is required as this class extends Foo public function __
我想做这样的事情:

abstract class Foo
{
    public function __construct()
    {
        echo 'This is the parent constructor';
    }

    abstract function __construct();
}

class Bar extends Foo
{
    // constructor is required as this class extends Foo
    public function __construct() 
    {
        //call parent::__construct() if necessary
        echo 'This is the child constructor';
    }
}

但是这样做时会出现致命错误:

Fatal error: Cannot redeclare Foo::__construct() in Foo.php on line 8

还有另一种方法可以确保子类具有构造函数吗?

解决方法

总之没有.可以通过abstract关键字声明非魔术方法.

如果要使用旧的构造函数方法,请创建一个与该类同名的方法,并将其声明为abstract.这将在实例化类时调用.

例:

abstract class Foo
{
    public function __construct()
    {
        echo 'This is the parent constructor';
    }

    abstract function Bar();
}

class Bar extends Foo
{
    // constructor is required as this class extends Foo
    public function Bar() 
    {
        parent::__construct();
        echo 'This is the child constructor';
    }
}

我建议使用接口来实现您的功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读