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

String Representation with __toString تحويل الكائن إلى نص قابل للطباعة عبر __toString

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

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

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

تحدد الدالة السحرية __toString(): string كيفية تحويل الكائن إلى نص تلقائياً عند تمريره إلى echo أو دمجه داخل نص مزدوج أو تحويله بـ (string).

  • تبدأ جميع الدوال السحرية في PHP بشرطتين سفليتين (__) ويستدعيها المحرك تلقائياً عند حدوث عمليات معينة على الكائن.
  • لا تأخذ الدالة __toString() أي معاملات، ويجب إلزاماً أن تُرجع قيمة نصية من النوع string.
  • في PHP 8.0+، أي صنف يعرّف الدالة __toString() يطبّق ضمنياً الواجهة المدمجة Stringable.

إن وضع الكائن {$price} داخل علامتي تنصيص مزدوجتين يستدعي تلقائياً الدالة $price->__toString().

مخطط توضيحي: محاكي الدوال السحرية ونسخ الكائنات بـ clone ومقارنتها في PHP
PHP
<?php
class Money {
    public function __construct(private int $cents, private string $curr) {}
    public function __toString(): string {
        return number_format($this->cents / 100, 2) . " " . $this->curr;
    }
}
$price = new Money(14995, "SAR");
echo "Total Due: {$price}\n";