PHP:如何从当前类中使用的 trait 方法调用父类方法?

4

让我们有以下几个类:

class baseClass {
    function method() {
        echo 'A';
    }
}

trait mixin {
    function mixinFunction() {
        ... /// <-- problem here
    }
}

class currentClass {
    use mixin;

    function method() {
        mixinFunction();
    }
}
...
$object = new currentClass();
$object->method();

在不改变类/方法结构和不将非静态方法调用为静态方法的情况下,是否可以从trait中执行baseClass::method()以在调用$object->method();时回显'A'?

编辑:

这是个愚蠢的问题,答案是在trait方法中使用parent::method(),它将调用baseClass::method()

2个回答

2

从trait copy到class的所有方法,你必须使用->::来调用这些方法。

trait mixin {
    function mixinFunction() {
        ... /// <-- problem here
    }
}

class currentClass {
    use mixin;

    function method() {
        $this->mixinFunction();
    }
}
...
$object = new currentClass();
$object->method();

你说得对,这是我一个愚蠢的问题 :) 我需要在我的 trait 中使用 parent::method()。当我问这个问题时,由于我的错误,它没有在我这里起作用 :) 人们说“正确的问题等于答案的一半以上”,这正是我的情况 :) - Alexander Pravdin

2

将其更改为:

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();
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接