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

标签 php oop

例如...

如果我有一个模块类:

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,现在又回到了 objective 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)。

关于php - 扩展其他类的类是否继承相同的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5291184/

相关文章:

javascript - HTML5 到 iOS 应用程序

Javascript 构造函数继承助手

java - 将类类型作为参数传递并创建它的实例

java - Java个人项目,如何访问数据库?

php - mysql转换问题。警告:mysqli_fetch_all()期望参数1为mysqli_result,在中给出 bool 值

php - 配对 foreach 循环的两个元素

php - 如何在mysqli中开始和结束事务?

java - 将Spring Security开发为通用模块并在Spring Boot微服务架构中切换

javascript - 如何向原型(prototype)添加属性 (javascript)

php - 如何通过内键对多维数组进行排序