Причем тут это... Да, var_dump показывает, что класса нет, но он от этого объектом быть не перестает. Причем это особенность var_dump() показать что объект не укомплектован классом.
Объект, это всего навсего тип данных. Набор данных, хранящийся в памяти. Такой же как массив. Отличие в том, что может работать только в составе класса, но его можно преспокойно сериализовать, записать в файл и поместить на флешку. Или передать по интернету. И там, куда его передадут, он может работать с другим классом, главное чтобы было такое же название. А методы могут быть разными.
Так что объект может преспокойно быть создан и счастливо существовать и без класса. Работать без него он разумеется не будет. Это как любая программа. Ты можешь написать ее даже на бумажке, и не сможешь сказать, что она не существует. Но работать она будет только будучи помещенной в компьютер. И так же как объект, она первична. Без программы комп, это куча микросхем. А без объекта класс - просто набор методов. Инструмент. Сам по себе работать не будет.
У меня был простой пример, с пустым объектом. Но можно же и свойства прописать.
Вот пожалуйста, расширим прошлый пример:
class example
{
public function run()
{
echo 'О как!';
}
}
$src = 'O:7:"example":1:{s:3:"var";s:16:"значение";}';
$obj = unserialize($src);
$obj->run();
А вот тот же объект с другим классом:
class example
{
public function run()
{
echo $this->var;
}
}
$src = 'O:7:"example":1:{s:3:"var";s:16:"значение";}';
$obj = unserialize($src);
$obj->run();
А вот вообще с другим методом:
class example
{
public function dysplay()
{
echo 'О как: '. $this->var .'!';
}
}
$src = 'O:7:"example":1:{s:3:"var";s:16:"значение";}';
$obj = unserialize($src);
$obj->dysplay();
Заметь, объект один и тот же, а работает с совершенно по разному реализованными классами.
Так что объект, это никакой не экземпляр класса. Это тип данных, ассоциированный с классом, ни больше, ни меньше. Это можно понять из этого примера, тут то точно никаких классов, просто приведение
типов данных:
$src = 'O:7:"example":1:{s:3:"var";s:16:"значение";}';
$obj = unserialize($src);
$array = (array)$obj;
echo $array['var'];
Не вижу проблемы. Так же можно сериализовать объект в JSON, и он будет жить долго и счастливо. Можно JSON организовать другими средствами, не обязательно из экземпляра класса, тупо сгенерировать строку нужного формата. А потом десериализовать из строки с помощью того же Jackson. Причем в JAVA такой объект можно сунуть в класс с любым названием. Ибо объект, повторюсь, это тип данных, набор значений публичных свойств. Ну если постараться, то и не публичных.)) Это я про полную аналогию, с текстом. Про бинарники вообще говорить не приходится.
Так а объект это и есть
тип данных. Технически просто набор данных в памяти. А вот класс, это уже программа, инструмент, то,что позволяет эти данные обработать.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.