微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

扩展其他类的类是否继承相同的构造函数?

例如…

如果我有一个Module类:

class Module{

  var $page;

  function Module($page){
    $this->page = $page;
  }
}

然后是一个特定的新闻模块类:

class News extends Module {
  function aFunction(){
    return $this->page->id;
  }
}

我可以这样实例化新闻:

$page = new Page();
$news = new News($page);

还是我必须这样做:

$page = new Page();
$news = new News();
$news->page = $page;

谢谢.

PS:我是OOP PHP的新手,所以请忍受.我已经从过程性PHP转到了Objective-c,现在又回到了目标PHP. :p尝试相互比较非常困难.

解决方法:

是的,他们继承了构造函数.您可以轻松地进行自我测试.例如:

class Foo {
  function __construct() {
    echo "foo\n";
  }
}

class Bar extends Foo {
}

运行时:

$bar = new Bar();  // echoes foo

但是,如果为类定义自定义构造函数,则不会调用Foo的构造函数.在这种情况下,请确保调用parent :: __ construct().

class Baz extends Foo {
  function __construct() {
    echo "baz ";
    parent::__construct();
  }
}

$baz = new Baz();  // echoes baz foo

所有这些对于您的老式构造函数都是正确的(类名与__construct的比较).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐