Задать вопрос
@lawyer_of_a_devil

Существует ли паттерн для сравнения двух объектов (PHP)?

К примеру я хочу сравнить два объекта $apple1 и $apple2 и понять, что у них есть различия:

$apple1 = new stdClass();
$apple1->color = red;
$apple1->size = 30;
//...

$apple2 = new stdClass();
$apple2->color = green;
$apple2->size = 30;
//..


Сравнение разумеется проводится по свойствам.
  • Вопрос задан
  • 4152 просмотра
Подписаться 4 Оценить 1 комментарий
Решения вопроса 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Если вам нужно просто сравнить объекты на равенство, с этим справится ==. Если же вам нужно получить различия двух объектов, можно сделать так:
<?php

$a = (object) ['color' => 'red', 'foo' => 'bar'];
$b = (object) ['color' => 'green', 'foo' => 'bar'];

$diff = array_diff(get_object_vars($a), get_object_vars($b));


Можно так же сделать у класса метод diff который принимает другой аргумент... Все зависит от задачи.
Ответ написан
Комментировать
@vdem
Какой еще паттерн? Берете два объекта и сравниваете. ==
Ответ написан
Комментировать
@Snewer
Если вам нужно сравнить свойства, и выявить различия, то посмотрите в сторону:
1. get_class_vars()
2. Циклом сравниваете два полученных массива
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы