Что такое stdClass в PHP? - PullRequest
981 голосов
/ 31 мая 2009

Укажите, что такое stdClass.

Ответы [ 16 ]

4 голосов
/ 13 марта 2018

Пожалуйста, помните, что 2 пустых класса stdClasses не являются строго равными. Это очень важно при написании насмешливых ожиданий.

php > $a = new stdClass();
php > $b = new stdClass();
php > var_dump($a === $b);
bool(false)
php > var_dump($a == $b);
bool(true)
php > var_dump($a);
object(stdClass)#1 (0) {
}
php > var_dump($b);
object(stdClass)#2 (0) {
}
php >
4 голосов
/ 14 октября 2015

Если вы хотите быстро создать новый объект для хранения некоторых данных о книге. Вы бы сделали что-то вроде этого:

$book = new stdClass;
$book->title = "Harry Potter and the Prisoner of Azkaban";
$book->author = "J. K. Rowling";
$book->publisher = "Arthur A. Levine Books";
$book->amazon_link = "http://www.amazon.com/dp/0439136369/";

Пожалуйста, проверьте сайт - http://www.webmaster -source.com / 2009/08/20 / php-stdclass-storing-data-object-Вместо-array / для более подробной информации.

3 голосов
/ 29 сентября 2017

- это способ, при котором избегает прекращения интерпретации сценария, когда в классе необходимо поместить некоторые данные, но к сожалению, этот класс не был определен

Пример:

 return $statement->fetchAll(PDO::FETCH_CLASS  , 'Tasks');

Здесь данные будут помещены в предопределенные «Задачи». Но, если бы мы сделали код следующим образом:

 return $statement->fetchAll(PDO::FETCH_CLASS );

тогда поместит результаты в .

просто говорит, что: смотри, у нас есть хорошие ДЕТИ [Объекты] Здесь, но без Родителей. Итак, мы отправим их в Дом по уходу за детьми младшего возраста :)

2 голосов
/ 19 июня 2016
В руководстве

php.net есть несколько убедительных объяснений и примеров, представленных пользователями о том, что такое stdClass, мне особенно нравится этот http://php.net/manual/en/language.oop5.basic.php#92123, https://stackoverflow.com/a/1434375/2352773.

stdClass - это объект PHP по умолчанию. У stdClass нет свойств, методы или родитель. Он не поддерживает магические методы, а реализует нет интерфейсов.

Когда вы приводите скаляр или массив в качестве объекта, вы получаете экземпляр StdClass. Вы можете использовать stdClass всякий раз, когда вам нужен универсальный объект экземпляр.

stdClass НЕ является базовым классом! PHP классы не наследуются автоматически из любого класса. Все классы автономны, если они явно продлить другой класс. PHP отличается от многих объектно-ориентированных языков в этом отношении.

Вы можете определить класс, который расширяет stdClass, но вы не получите выгода, поскольку stdClass ничего не делает.

1 голос
/ 12 августа 2017

stClass - это пустой класс, созданный самим php, и должен использоваться только php, потому что это не просто «пустой» класс, php использует stdClass для преобразования массивов в стиль объекта если вам нужно использовать stdClass, я рекомендую два лучших варианта: 1- использовать массивы (намного быстрее, чем классы) 2- создайте свой собственный пустой класс и используйте его

//example 1
$data=array('k1'=>'v1' , 'k2'=>'v2',....);

//example 2
//creating an empty class is faster than instances an stdClass
class data={}
$data=new data();
$data->k1='v1';
$data->k2='v2';

что заставляет задуматься об использовании стиля объекта вместо стиля массива ???

1 голос
/ 28 января 2016

Вы также можете использовать object для приведения массивов к объекту по вашему выбору:

Class Example
{
   public $name;
   public $age;
}

Теперь, чтобы создать объект типа Example и инициализировать его, вы можете выполнить одно из следующих действий:

$example = new Example();
$example->name = "some name";
$example->age = 22;

OR

$example = new Example();
$example = (object) ['name' => "some name", 'age' => 22];

Второй метод наиболее полезен для инициализации объектов со многими свойствами.

...