Ну вы не можете serialize()
закрытия прямо, но вы можете сделать обходной путь, поскольку serialize()
вызывает __sleep()
, когда он сериализации объектов, так что это дает объект вариант, чтобы очистить вещи! Это то, что мы делаем здесь:
class a {
protected $whatever;
function __construct() {
$this->whatever = function() {};
}
public function __sleep() {
$r = [];
foreach ($this as $k => $v){
if (!is_array($v) && !is_string($v) && is_callable($v))
continue;
$r[] = $k;
}
return $r;
}
}
Итак, теперь вы можете использовать serialize()
с md5()
, чтобы сравнить свои объекты, как это:
var_dump(md5(serialize($b)) === md5(serialize($c)));
выход:
bool(true)
Так он основывается на класс? Итак, если вы делали '$ c-> var = 1;' они должны быть '==' или нет? – AbraCadaver
Простейшим может быть пользовательский метод сравнения: '$ b-> isEqual ($ c)', в котором вы сравниваете все, что имеет значение для равенства, и игнорируете несравнимые значения. – deceze