Kịch bản:
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
Mã này không hoạt động và tôi không thể tìm ra cách gọi hàm đặc điểm giống như nó được kế thừa. Tôi đã thử gọi self::calc($v)
, static::calc($v)
,parent::calc($v)
, A::calc($v)
và sau đây:
trait A {
function calc($v) {
return $v+1;
}
}
class MyClass {
use A {
calc as traitcalc;
}
function calc($v) {
$v++;
return traitcalc($v);
}
}
Không có gì hoạt động.
Có cách nào để làm cho nó hoạt động hay tôi phải ghi đè hoàn toàn chức năng đặc điểm phức tạp hơn nhiều so với điều này :)