Jak zastąpić funkcję cechy i wywołać ją z funkcji nadpisanej?
Scenariusz:
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
Ten kod nie działa i nie mogę znaleźć sposobu na wywołanie funkcji cechy, tak jakby była dziedziczona. Próbowałem dzwonićself::calc($v)
, static::calc($v)
, parent::calc($v)
, A::calc($v)
i następujące:
trait A {
function calc($v) {
return $v+1;
}
}
class MyClass {
use A {
calc as traitcalc;
}
function calc($v) {
$v++;
return traitcalc($v);
}
}
Nic nie działa.
Czy jest jakiś sposób, aby to zadziałało lub czy muszę całkowicie przesłonić funkcję cechy, która jest znacznie bardziej złożona niż ta :)