How to override trait function and call it from the overridden function?

后端 未结 5 1933
时光说笑
时光说笑 2020-11-27 09:49

Scenario:

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

class MyClass {
    use A;

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


        
5条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-11-27 10:15

    Using another trait:

    trait ATrait {
        function calc($v) {
            return $v+1;
        }
    }
    
    class A {
        use ATrait;
    }
    
    trait BTrait {
        function calc($v) {
            $v++;
            return parent::calc($v);
        }
    }
    
    class B extends A {
        use BTrait;
    }
    
    print (new B())->calc(2); // should print 4
    

提交回复
热议问题