<?php
class compareobject
{
    public static function compareobjects($obj1,$obj2)
     {
         $resultado = false;
         //creo los objetos basados en ReflectionClass
         $refObj1 = new ReflectionClass($obj1);
         $refObj2 = new ReflectionClass($obj2);
         //voy a comparar si ambos objetos tienen el mismo nombre de clase
         if($refObj1->getName()==$refObj2->getName() )
         {
             //obtengo las propiedades de cada uno de los objetos
             $aProp1=$refObj1->getProperties();
             $aProp2=$refObj2->getProperties();
             //voy a iterar entre todas las propiedades de los objetos
             //como ya determine que ambos son de la misma clase
             //ambos tienen la misma cantidad de propiedades
             for($k=0;$k<sizeof($aProp2);$k++)
             {
                 //si la propiedad es privada la coloco como accesible
                 if($aProp1[$k]->isPrivate())
                 {
                     $aProp1[$k]->setAccessible(true);
                     $aProp2[$k]->setAccessible(true);
                 }
                 //si la propiedad es protegida la coloco como accesible
                 if($aProp1[$k]->isProtected())
                 {
                     $aProp1[$k]->setAccessible(true);
                     $aProp2[$k]->setAccessible(true);
                 }
                 //comparo ambos valores
                 if($aProp1[$k]->getValue($obj1)==$aProp2[$k]->getValue($obj2))
                    $resultado = true;
                 else
                 {
                     //si una de las propiedades no es igual en ambos objetos
                     //termino el for
                     $resultado=false;
                     break 1;
                 }
             }
         }
         else
            $resultado = false;
         return $resultado ;
     }    
}
?> Cách dùng rất đơn giản:
 <?php
    include('compareobject.php');
    class class1
    {
        private $x;
        private $y;
        
        function __set($propiedad,$valor)
        {
            $this->$propiedad=$valor;
        }
        function __get($propiedad)
        {
            return $this->$propiedad;
        }
    }
    
    $object1=new class1();
    $object1->x=10;
    $object1->y=20;
    
    $object2=new class1();
    $object2->x=10;
    $object2->y=20;
    
    $object3=new class1();
    $object3->x=10;
    $object3->y=10;
    if(compareobject::compareobjects($object1,$object2))
    {
        echo "The OBJECT 1: \n";
        print_r($object1);
        echo "\nIs Equal to \n"; //print 1
        echo "The OBJECT 2: \n";
        print_r($object2);
        echo "\n";
        echo "\n";
        echo "\n";
    }
    if(!compareobject::compareobjects($object1,$object3))
    {
        echo "The OBJECT 1: \n";
        print_r($object1);
        echo "\nIs not equal to \n"; //print 1
        echo "The OBJECT 3: \n";
        print_r($object3);    
    }
    
?> 
