انتقل إلى محتوى الدرس

PHP Magic Methods Reference Table الجدول المرجعي لأهم الدوال السحرية في PHP 8

خصّص سلوك الكائنات في PHP 8 عبر الدوال السحرية __toString و__invoke و__clone، وافهم النسخ السطحي والعميق ومقارنة الكائنات.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

استخدم هذا الجدول المرجعي لمعرفة متى يستدعي محرك PHP كل دالة سحرية خلال دورة حياة الكائن.

  • يجب إعلان جميع الدوال السحرية برؤية public (باستثناء __construct و__destruct و__clone التي يمكن تقييدها في أنماط معينة).
  • تتيح الدالة __debugInfo(): array إخفاء الحقول الحساسة (مثل مفاتيح API أو كلمات المرور) عند طباعة الكائن بـ var_dump($obj).
  • تجنب الإفراط في __get() و__set() عندما تكون الخصائص الصريحة أو خطافات PHP 8.4 كافية.

يضمن تعريف الدالة __debugInfo() حجب المفتاح السري $secret بحيث لا تتسرب البيانات الحساسة أثناء الفحص.

الدالة السحريةتُستدعى تلقائياً عندنوع القيمة المعادة
__construct(...)Creating a new instance with newNone (void disallowed)
__toString(): stringCasting object to string or echo $objstring
__invoke(...)Calling object as a function $obj()mixed
__get($name) / __call($m, $a)Accessing inaccessible property / methodmixed
__clone(): voidAfter shallow copy via clone $objvoid

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 كافية.