Сценарій:
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);
}
}
Нічого не працює.
Чи є спосіб змусити його працювати чи потрібно повністю перекрити функцію, яка є набагато складнішою за цю :)