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>