Как переопределить функцию 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
Этот код не работает, и я не могу найти способ вызвать функцию признака, как она была унаследована. Я пробовал звонить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);
}
}
Ничего не работает
Есть ли способ заставить его работать или я должен полностью переопределить функцию trait, которая намного сложнее, чем эта :)