شرح صفوف ومحتوى الفقرة
استخدم هذا الجدول المرجعي لمعرفة متى يستدعي محرك PHP كل دالة سحرية خلال دورة حياة الكائن.
- يجب إعلان جميع الدوال السحرية برؤية
public(باستثناء__constructو__destructو__cloneالتي يمكن تقييدها في أنماط معينة). - تتيح الدالة
__debugInfo(): arrayإخفاء الحقول الحساسة (مثل مفاتيح API أو كلمات المرور) عند طباعة الكائن بـvar_dump($obj). - تجنب الإفراط في
__get()و__set()عندما تكون الخصائص الصريحة أو خطافات PHP 8.4 كافية.
يضمن تعريف الدالة __debugInfo() حجب المفتاح السري $secret بحيث لا تتسرب البيانات الحساسة أثناء الفحص.
| الدالة السحرية | تُستدعى تلقائياً عند | نوع القيمة المعادة |
|---|---|---|
__construct(...) | Creating a new instance with new | None (void disallowed) |
__toString(): string | Casting object to string or echo $obj | string |
__invoke(...) | Calling object as a function $obj() | mixed |
__get($name) / __call($m, $a) | Accessing inaccessible property / method | mixed |
__clone(): void | After shallow copy via clone $obj | void |
PHP
<?php
class ApiClient {
public function __construct(public string $host, private string $secret) {}
public function __debugInfo(): array {
return ["host" => $this->host, "secret" => "***REDACTED***"];
}
}
$client = new ApiClient("api.example.com", "sk_live_998877");
echo json_encode($client->__debugInfo()) . "\n";
خلاصة المعرفة ومحطة الانتقال
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
استخدم هذا الجدول المرجعي لمعرفة متى يستدعي محرك PHP كل دالة سحرية خلال دورة حياة الكائن. يجب إعلان جميع الدوال السحرية برؤية public (باستثناء __construct و__destruct و__clone التي يمكن تقييدها في أنماط معينة). تتيح الدالة __debugInfo(): array إخفاء الحقول الحساسة (مثل مفاتيح API أو كلمات المرور) عند طباعة الكائن بـ var_dump($obj). تجنب الإفراط في __get() و__set() عندما تكون الخصائص الصريحة أو خطافات PHP 8.4 كافية.