如何在PHP中重写trait方法并从重写的方法中调用它?
大家好!我正在学习PHP,遇到了一个关于traits的问题。情况是这样的:我有一个`Logger` trait,其中包含一个`log($message)`方法。这个方法只是将消息输出到控制台。我想在`UserService`类中使用这个trait,但需要修改`log`方法的行为:为消息添加类名前缀。然而,在重写方法后,我无法从trait中调用原始版本。
以下是示例代码:
```php
trait Logger {
public function log($message) {
echo "LOG: " . $message . "\n";
}
}
class UserService {
use Logger;
public function log($message) {
// 想调用trait的父方法,但不知道如何做
// parent::log($message); // 错误!
echo "[" . __CLASS__ . "] " . $message . "\n";
}
}
$service = new UserService();
$service->log("用户已创建");
```
我尝试过使用`parent::log()`,但不起作用——会报错。我也尝试过