相关疑难解决方法(0)

如何覆盖trait函数并从重写函数调用它?

场景:

trait A {
    function calc($v) {
        return $v+1;
    }
}

class MyClass {
    use A;

    function calc($v) {
        $v++;
        return A::calc($v);
    }
}

print (new MyClass())->calc(2); // should print 4
Run Code Online (Sandbox Code Playgroud)

这段代码不起作用,我找不到像继承那样调用特征函数的方法.我试着打电话self::calc($v),static::calc($v)和parent::calc($v),A::calc($v)以及以下内容:

trait A {
    function calc($v) {
        return $v+1;
    }
}

class MyClass {
    use A {
        calc as traitcalc;
    }

    function calc($v) {
        $v++;
        return traitcalc($v);
    }
}
Run Code Online (Sandbox Code Playgroud)

什么都行不通.

有没有办法使它工作或必须完全覆盖比这复杂得多的特征函数:)

php traits

344
推荐指数
5
解决办法
9万
查看次数

标签 统计

php ×1

traits ×1