Объект
Оригинальное название: object
Коротко
Конкретный экземпляр данных в программе, у которого есть собственные значения свойств и действия, доступные через методы; в ООП объекты создаются по описанию класса.
Что такое «Объект»
Если класс — чертёж, то объект — изделие по нему. Класс «Заказ» описывает, что у заказа есть номер, сумма и статус и что его можно оплатить. Объект — заказ № 1024 на 7300 со статусом «новый». Объектов одного класса может быть сколько угодно, и у каждого свои значения. Сами значения хранятся в свойствах.
Объект в PHP и в JavaScript
В PHP объект почти всегда создаётся оператором new из класса. Для простых случаев есть безымянный stdClass, и его же возвращает json_decode() без второго аргумента. В JavaScript объект можно описать литералом без всякого класса: { id: 1024, status: 'new' }. Классы появились в языке позже и работают поверх прототипов. Формат JSON вырос именно из этого литерального синтаксиса.
Пример: объект передаётся не копией
Важное отличие объектов от чисел и строк — при передаче в функцию копия не создаётся. Функция получает доступ к тому же самому объекту:
$order = new stdClass();
$order->status = 'new';
function markPaid(object $o): void { $o->status = 'paid'; }
markPaid($order);
echo $order->status; // paid — функция изменила исходный объект
$copy = clone $order;
$copy->status = 'cancelled'; // $order остался 'paid'
В JavaScript то же самое: присваивание const b = a не копирует объект, а даёт второе имя для него. Поверхностную копию делают через { ...a }, глубокую — функцией structuredClone().
Как сравнивают объекты
В PHP оператор == считает два объекта равными, если они одного класса и с одинаковыми значениями свойств. Оператор === — только если это один и тот же экземпляр. В JavaScript === для объектов всегда сравнивает ссылки, поэтому {a: 1} === {a: 1} даёт false. Это частая причина ошибок при проверке «изменились ли данные» в интерфейсе. Как объекты складываются в программу и взаимодействуют друг с другом, описывает ООП.

