В PHP есть что-либо аналогичное для определения размера объекта?
Нет, потому что в этом нет смысла. Ибо реальный размер структур весьма сложно подсчитать. Например все строковые литералы (имена переменных к примеру) для 10-ти инстансов объектов одного типа будут заменены на указатели в
буфер, и суммарный размер уже не так легко подсчитать.
Вариант же с memory_get_usage как предлагается выше тоже не будет работать по причине того, что внутри интерприатора все куда сложнее. Для примера:
class Foo {
private $bar;
public function __construct(string $bar) {
$this->bar = $bar;
}
}
$start = memory_get_usage();
$a = new Foo('test1');
$middle = memory_get_usage();
$b = new Foo('longer value');
$end = memory_get_usage();
echo $middle - $start, PHP_EOL; // 56
echo $end - $middle, PHP_EOL; // 56
Собственно логично что раз у нас размер значений разный то и размер интансов должен быть разным. Не забываем так же что между забором потребления памяти у нас есть так же накладные расходы на ссылку на объект + переменную. Так же не забываем что php выделяет память блоками....
словом - возможности точно подсчитать размер инстанса в памяти PHP не предоставляет.