Essa função retorna quais atributos são diferentes entre dois objetos, e opcionalmente você pode especificar apenas para verificar alguns desses atributos.
function diff($objeto_antes, $objeto_depois, $atributos_especificos = array())
{
$diff = array();
foreach ($objeto_antes as $atributo => $valor) {
if (isset($objeto_depois->$atributo)) {
// foram especificados atributos para comparar? ...
if (sizeof($atributos_especificos) > 0) {
// ... o atributo atual está na lista?
if (in_array($atributo, $atributos_especificos)) {
if ($objeto_depois->$atributo != $valor) {
$diff[] = $atributo;
}
}
} else {
if ($objeto_depois->$atributo != $valor) {
$diff[] = $atributo;
}
}
}
}
return $diff;
}
Leave a Reply
You must be logged in to post a comment.