شرح صفوف ومحتوى الفقرة
عند مقارنة كائنين، تفحص المساواة المرنة (==) ما إذا كانا من نفس الصنف ويحملان نفس قيم الخصائص، بينما تفحص المطابقة الصارمة (===) ما إذا كان المتغيران يشيران إلى نفس الكائن بالضبط في الذاكرة.
- فور تنفيذ
$copy = clone $original، تكون نتيجة$copy == $originalهيtrue(نفس الصنف والقيم)، بينما نتيجة$copy === $originalهيfalse(كائنان منفصلان). - بعد الإسناد العادي
$alias = $original، تكون نتيجة كل من$alias == $originalو$alias === $originalهيtrue. - أي كائنين من صنفين مختلفين لا يتساويان أبداً سواء بـ
==أو بـ===.
المتغير $b2 نسخة مستنسخة (نفس القيم بـ == ولكن هوية مستقلة بـ !==)، بينما $b3 يشير لنفس الكائن $b1 في الذاكرة.
PHP
<?php
class Badge { public function __construct(public string $code) {} }
$b1 = new Badge("GOLD");
$b2 = clone $b1;
$b3 = $b1;
echo "b1 == b2 : " . ($b1 == $b2 ? "true" : "false") . "\n";
echo "b1 === b2 : " . ($b1 === $b2 ? "true" : "false") . "\n";
echo "b1 === b3 : " . ($b1 === $b3 ? "true" : "false") . "\n";