HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>PHP поставляется с небольшим набором предопределённых классов, в который входит stdClass. Этот класс имеет особое значение для языка и используется в некоторых ситуациях автоматически.</p>
1 <p>PHP поставляется с небольшим набором предопределённых классов, в который входит stdClass. Этот класс имеет особое значение для языка и используется в некоторых ситуациях автоматически.</p>
2 <p>Первое, что бросается в глаза: stdClass нарушает стандарт именования и начинается с маленькой буквы. Вторая особенность проявляется при работе с ним - в stdClass нет предопределённых свойств и методов, но объекты этого класса могут наполняться любыми свойствами в процессе работы.</p>
2 <p>Первое, что бросается в глаза: stdClass нарушает стандарт именования и начинается с маленькой буквы. Вторая особенность проявляется при работе с ним - в stdClass нет предопределённых свойств и методов, но объекты этого класса могут наполняться любыми свойствами в процессе работы.</p>
3 <p>Для объектов обычных классов (не stdClass), попытка прочитать значение неопределенного свойства приводит к Notice, который является ошибкой. Однако, даже там можно имитировать поведение stdClass. Делается это с помощью специальных магических методов __get() и __set(). Эти методы вызываются автоматически при обращении к неопределённым свойствам и позволяют создавать их на лету.</p>
3 <p>Для объектов обычных классов (не stdClass), попытка прочитать значение неопределенного свойства приводит к Notice, который является ошибкой. Однако, даже там можно имитировать поведение stdClass. Делается это с помощью специальных магических методов __get() и __set(). Эти методы вызываются автоматически при обращении к неопределённым свойствам и позволяют создавать их на лету.</p>
4 <p>Такие объекты очень похожи на ассоциативные массивы, но с объектным синтаксисом. Например, в JavaScript встроен тип данных object, который ведёт себя одновременно и как ассоциативный массив, и как объект из примера выше. В зависимости от желания, к нему можно обращаться и так, и так.</p>
4 <p>Такие объекты очень похожи на ассоциативные массивы, но с объектным синтаксисом. Например, в JavaScript встроен тип данных object, который ведёт себя одновременно и как ассоциативный массив, и как объект из примера выше. В зависимости от желания, к нему можно обращаться и так, и так.</p>
5 <h2>Преобразование типов</h2>
5 <h2>Преобразование типов</h2>
6 <p>Преобразование ассоциативного массива в объект приводит к созданию объекта класса stdClass;</p>
6 <p>Преобразование ассоциативного массива в объект приводит к созданию объекта класса stdClass;</p>
7 <h2>Парсинг JSON</h2>
7 <h2>Парсинг JSON</h2>
8 <p>В PHP не разделяются понятия массив и ассоциативный массив, что резко отличается от всех остальных языков и форматов. Например, в JSON это два разных типа данных.</p>
8 <p>В PHP не разделяются понятия массив и ассоциативный массив, что резко отличается от всех остальных языков и форматов. Например, в JSON это два разных типа данных.</p>
9 <p>В JSON files содержит массив, а require - ассоциативный массив. Именно в таких ситуациях и подходит stdClass (хотя, откровенно говоря, это - костыль из-за отсутствия нормальных массивов). Функция json_decode() парсит переданный ей JSON и формирует либо массив, либо объект stdClass, в зависимости от того, чем были данные внутри JSON.</p>
9 <p>В JSON files содержит массив, а require - ассоциативный массив. Именно в таких ситуациях и подходит stdClass (хотя, откровенно говоря, это - костыль из-за отсутствия нормальных массивов). Функция json_decode() парсит переданный ей JSON и формирует либо массив, либо объект stdClass, в зависимости от того, чем были данные внутри JSON.</p>
10 <h2>Конфигурация</h2>
10 <h2>Конфигурация</h2>
11 <p>Многие фреймворки используют stdClass для хранения конфигурации, так как она динамическая (то есть состав ключей меняется в зависимости от потребностей разработчика).</p>
11 <p>Многие фреймворки используют stdClass для хранения конфигурации, так как она динамическая (то есть состав ключей меняется в зависимости от потребностей разработчика).</p>