让我们有以下课程:
class baseClass {
function method() {
echo 'A';
}
}
trait mixin {
function mixinFunction() {
... /// <-- problem here
}
}
class currentClass {
use mixin;
function method() {
mixinFunction();
}
}
...
$object = new currentClass();
$object->method();
调用$object-> method()时是否可以从trait执行baseClass :: method()以回显’A’;无需更改此类/方法的结构,也无需将非静态方法称为静态方法?
编辑:
这是一个愚蠢的问题,答案是在trait方法中使用parent :: method(),它将调用baseClass :: method().
解决方法:
从特征复制到类的all方法,您必须以->调用方法.要么 ::.
trait mixin {
function mixinFunction() {
... /// <-- problem here
}
}
class currentClass {
use mixin;
function method() {
$this->mixinFunction();
}
}
...
$object = new currentClass();
$object->method();