【发布时间】:2013-12-27 23:20:50
【问题描述】:
假设我有class child() 和class parent()。父级有一个构造函数和一些其他公共方法,而子级除了构造函数之外是空的。
如何在子构造函数中调用父方法,如下所示:
Class Parent {
public function __construct() {
// Do stuff (set up a db connection, for example)
}
public function run($someArgument) {
// Manipulation
return $modifiedArgument;
}
}
Class Child extends Parent {
public function __construct() {
// Access parent methods here?
}
}
假设我想调用parents run() 方法,我是否必须在子构造函数中调用父级的新实例?就这样……
$var = new Parent();
$var->run($someArgument);
如果是这样,从类定义 POV 中extends 的意义何在?我可以使用 new 关键字调用另一个类的新实例,无论它是否扩展了“孩子”。
我(可能)错误的理解是,通过使用extends,您可以将父级的类和方法链接到子级。那只是在类定义之外吗?使用extend 是否在类定义中没有效率?
因为用this关键字引用父级的run()方法肯定是行不通的……
【问题讨论】:
-
但是
$this不是只指子定义吗?我尝试调用$this->__construct();作为对子构造函数中父构造函数的引用,PHP 抛出的错误表明它认为手头的对象是子构造函数本身。 -
带有
parent关键字,很有趣;)
标签: php class oop inheritance