[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Опять про объекты)
Страницы: 1, 2, 3
Ron
Цитата (twin @ 14.12.2019 - 09:45)
И объект первичен. А класс, это инструмент, которым этот объект пользуется. Где здесь ошибка?

Ошибка в том, что первичен не объект, а тип. Можем его декларировать через класс или интерфейс, который по сути является частным видом. Следовательно, первичен именно класс.

Твой пример через сериализацию позволяет кастить обекты к совершенно различным типам, тем самым ломая буквально всё в парадигме. И неокрепшее восприятие тех, кот это будет читать.

Кстати, мне кое-кто напоминает Рыбникова (который про математику и физику). laugh.gif
В продолжение топика рекомендую!

twin
Цитата (brevis @ 14.12.2019 - 12:31)
Но, даже если класс example не будет объявлен, var_dump скажет тебе, что твой $obj является экземпляром класса __PHP_Incomplete_Class.
Причем тут это... Да, 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'];


Цитата (brevis @ 14.12.2019 - 12:31)
Ну попробуй провернуть этот фокус, скажем, в Java.
Не вижу проблемы. Так же можно сериализовать объект в JSON, и он будет жить долго и счастливо. Можно JSON организовать другими средствами, не обязательно из экземпляра класса, тупо сгенерировать строку нужного формата. А потом десериализовать из строки с помощью того же Jackson. Причем в JAVA такой объект можно сунуть в класс с любым названием. Ибо объект, повторюсь, это тип данных, набор значений публичных свойств. Ну если постараться, то и не публичных.)) Это я про полную аналогию, с текстом. Про бинарники вообще говорить не приходится.

Цитата (Ron @ 14.12.2019 - 14:33)
Ошибка в том, что первичен не объект, а тип.
Так а объект это и есть тип данных. Технически просто набор данных в памяти. А вот класс, это уже программа, инструмент, то,что позволяет эти данные обработать.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.