我们有以下课程:
class baseClass {
function method() {
echo 'A';
}
}
trait mixin {
function mixinFunction() {
... /// <-- problem here
}
}
class currentClass {
use mixin;
function method() {
mixinFunction();
}
}
...
$object = new currentClass();
$object->method();
在不更改此类/方法结构且不将非静态方法称为静态的情况下调用baseClass::method()
时,是否可以从trait执行$object->method();
回显'A'?
修改
这是一个愚蠢的问题,答案是在特质方法中使用parent::method()
,它会调用baseClass::method()
。
答案 0 :(得分:2)
从trait copy
到class的所有方法,您必须以[{1}}或->
调用方法。
::
答案 1 :(得分:1)
将其更改为:
class baseClass {
function method() {
echo 'A';
}
}
trait mixin {
abstract function method();
function mixinFunction() {
$this->method();
}
}
class currentClass extends baseClass {
use mixin;
function method() {
$this->mixinFunction();
}
}