كيفية تجاوز طريقة trait في PHP واستدعائها من الطريقة المُعاد تعريفها؟
مرحبًا بالجميع! أنا أتعلم PHP وواجهت مشكلة مع traits. الموقف كالتالي: لدي trait `Logger` يحتوي على طريقة `log($message)`. هذه الطريقة ببساطة تطبع الرسالة في وحدة التحكم. أريد استخدام هذا trait في كلاس `UserService`، لكني بحاجة لتغيير سلوك طريقة `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()`، لكنه لا يعمل — يظهر خطأ. كما جربت