例如...
如果我有一个模块类:
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/