Пожалуйста, определите, что stdClass
есть.
1050
stdClass
является универсальным пустым классом PHP, вроде как Object
в Java или object
в Python ( Edit: но на самом деле не используется в качестве универсального базового класса; спасибо @Ciaran за указание на это ).
Это полезно для анонимных объектов, динамических свойств и т. Д.
Простой способ рассмотреть StdClass - это альтернатива ассоциативному массиву. Посмотрите этот пример ниже, который показывает, как json_decode()
позволяет получить экземпляр StdClass или ассоциативный массив. Также, но не показано в этом примере, SoapClient::__soapCall
возвращает экземпляр StdClass.
<?php
//Example with StdClass
$json = '{ "foo": "bar", "number": 42 }';
$stdInstance = json_decode($json);
echo $stdInstance->foo . PHP_EOL; //"bar"
echo $stdInstance->number . PHP_EOL; //42
//Example with associative array
$array = json_decode($json, true);
echo $array['foo'] . PHP_EOL; //"bar"
echo $array['number'] . PHP_EOL; //42
Посмотрите Динамические Свойства в PHP и StdClass для большего количества примеров.
{}
конструкции JavaScript .function(StdClass $a, array $params)
против проверки,$a
является ли объект иinstanceof
.stdClass
это просто общий «пустой» класс, который используется при приведении других типов к объектам. Несмотря на то, что говорят два других ответа,stdClass
это не базовый класс для объектов в PHP. Это может быть продемонстрировано довольно легко:Я не верю, что есть концепция базового объекта в PHP
источник
stdClass - еще одна замечательная функция PHP. Вы можете создать анонимный класс PHP. Давайте посмотрим на пример.
Теперь подумайте, что у вас есть другой класс, который инициализируется объектом страницы и выполняет на нем базу.
Теперь вам нужно создать новый объект PageShow с Page Object.
Здесь нет необходимости писать новый шаблон класса, для этого вы можете просто использовать stdClass для создания класса на лету.
источник
stdClass
.Также стоит отметить, что
stdClass
объект может быть создан с использованиемjson_decode()
также.источник
True
. Булевы строчныеtrue
илиfalse
.Используя stdClass, вы можете создать новый объект с его собственными свойствами. Рассмотрим следующий пример, который представляет детали пользователя в виде ассоциативного массива.
Если вам необходимо представить те же данные, что и свойства объекта, вы можете использовать stdClass, как показано ниже.
Если вы являетесь разработчиком Joomla, обратитесь к этому примеру в документации Joomla для дальнейшего понимания.
источник
Точно так же,
возвращает объект stdClass - автоматически приведен
Я узнал об этом сегодня по орфографии:
Круто!
источник
stdClass не является анонимным классом или анонимным объектом
Ответы здесь включают выражения, которые
stdClass
являются анонимным классом или даже анонимным объектом. Это не правда.stdClass
просто обычный предопределенный класс. Вы можете проверить это с помощьюinstanceof
оператора или функцииget_class
. Ничего особенного здесь не происходит. PHP использует этот класс при приведении других значений к объекту.Во многих случаях, когда
stdClass
программисты используют массив, это лучший вариант из-за полезных функций и того факта, что этот сценарий использования представляет структуру данных, а не реальный объект.источник
Также стоит отметить, что при использовании Casting вам на самом деле не нужно создавать объект, как в ответе @Bandula. Вместо этого вы можете просто привести ваш массив к объекту и вернуть stdClass. Например:
Output: again
источник
На самом деле я попытался создать пустой stdClass и сравнил скорость с пустым классом.
затем приступили к созданию 1000 stdClasses и emps ... пустые классы были созданы примерно за 1100 микросекунд, в то время как stdClasses заняло более 1700 микросекунд. Поэтому я думаю, что лучше создать свой собственный фиктивный класс для хранения данных, если вы хотите использовать объекты для этого так плохо (массивы намного быстрее как для записи, так и для чтения).
источник
Используемые объекты stdClass
Класс stdClass позволяет создавать анонимные классы, а с помощью приведения объектов вы также можете получить доступ к ключам ассоциативного массива в стиле ООП. Так же, как вы бы получили доступ к обычному свойству объекта.
пример
будет эхом
источник
Если вы хотите быстро создать новый объект для хранения некоторых данных о книге. Вы бы сделали что-то вроде этого:
Пожалуйста, проверьте сайт - http://www.webmaster-source.com/2009/08/20/php-stdclass-storing-data-object-instead-array/ для получения более подробной информации.
источник
Пожалуйста, имейте в виду, что 2 пустых stdClasses не являются строго равными. Это очень важно при написании насмешливых ожиданий.
источник
Руководство php.net содержит несколько убедительных объяснений и примеров, представленных пользователями о том, что такое stdClass, мне особенно нравится этот http://php.net/manual/en/language.oop5.basic.php#92123 , https: // stackoverflow.com/a/1434375/2352773 .
источник
StdClass это способ, которым PHP Избегайте остановки интерпретации скрипта, когда в класс необходимо поместить некоторые данные, но, к сожалению, этот класс не был определен
Пример :
Здесь данные будут помещены в предопределенные «Задачи». Но, если бы мы сделали код так:
тогда PHP поместит результаты в StdClass ,
просто PHPговорит, что: смотри, у нас есть хорошие дети [объекты] здесь, но без родителей. Итак, мы отправим их в Дом по уходу за ребенкомStdClass :)
источник
Вы также можете использовать
object
для приведения массивов к объекту по вашему выбору:Теперь, чтобы создать объект типа
Example
и инициализировать его, вы можете сделать одно из следующих:ИЛИ
Второй метод в основном полезен для инициализации объектов со многими свойствами.
источник
stClass - это пустой класс, созданный самим php, и должен использоваться только php, потому что это не просто «пустой» класс, php использует stdClass для преобразования массивов в стиль объекта, если вам нужно использовать stdClass, я рекомендую два лучших варианта : 1 - использовать массивы (намного быстрее, чем классы) 2 - создать свой собственный пустой класс и использовать его
что заставляет кого-то задумываться об использовании стиля объекта вместо стиля массива ???
источник
Причина, по которой у нас есть stdClass, заключается в том, что в PHP нет способа отличить обычный массив от ассоциированного массива (как в Javascript, который вы используете
{}
для объекта и[]
для массива, чтобы различать их).Так что это создает проблему для пустых объектов. Возьми это к примеру.
PHP:
Давайте предположим, что вы хотите JSON кодировать переменную $ c
Теперь предположим, что вы удалили все ключи из
$b
пустого. Поскольку$b
теперь он пуст (вы удалили все ключи, помните?), Похоже,[]
что это может быть либо массив, либо объект, если вы посмотрите на него.Так что, если вы снова сделаете json_encode, результат будет другим
Это проблема, потому что мы знаем,
b
что это должен быть ассоциированный массив, а PHP (или любая другая функция, такая как json_encode) - нет.Итак, stdClass приходит на помощь. Взять тот же пример снова
Так что теперь, даже если вы удалите все ключи из
$b
и сделаете его пустым, так как это класс stdClass, это не будет иметь значения, и когда вы будете json_encode, вы получите это:Это также причина, по которой
json_encode
иjson_decode
по умолчанию возвращает stdClass.источник