Я хочу узнать, что такое stdClass в PHP?
Ответ 1
stdClass— это общий чистый класс PHP, вроде как Object в Java или Object в Python (но на самом деле не используется в качестве универсального базового класса).
Это полезно для анонимных объектов, динамических свойств и т. д.
Простой способ рассмотреть StdClass — это альтернатива ассоциативному массиву, см. пример ниже, в котором показано, как json_decode() получает экземпляр StdClass.
<?php
//Пример с StdClass
$json = '{ "foo": "bar", "number": 42 }';
$stdInstance = json_decode($json);
echo $stdInstance->foo . PHP_EOL; //"bar"
echo $stdInstance->number . PHP_EOL; //42
// Пример с ассоциативным массивом
$array = json_decode($json, true);
echo $array['foo'] . PHP_EOL; //"bar"
echo $array['number'] . PHP_EOL; //42
Ответ 2
stdClass— это просто общий «пустой» класс, который используется при преобразовании других типов в объекты. Это можно довольно легко продемонстрировать:
class Foo{}
$foo = new Foo();
echo ($foo instanceof stdClass)?'Y':'N';
// Выводит 'N'
Ответ 3
stdClass — еще одна универсальная функция PHP. Можно создать анонимный класс в PHP. Можно продемонстрировать простой пример:
$page=new stdClass();
$page->name='Home';
$page->status=1;
После этого кода можно показать другой класс, который инициализируется объектом страницы и выполняет на нем базовый код.
<?php
class PageShow {
public $currentpage;
public function __construct($pageobj) {
$this->currentpage = $pageobj;
}
public function show() {
echo $this->currentpage->name;
$state = ($this->currentpage->status == 1) ? 'Active' : 'Inactive';
echo 'This is ' . $state . ' page';
}
}
Теперь необходимо создать новый объект PageShow с объектом страницы.
Здесь нет необходимости писать новый шаблон класса, для этого можно просто использовать stdClass для создания класса на лету.
$pageview=new PageShow($page);
$pageview->show();
Ответ 4
Используя stdClass, вы можете создать новый объект с его собственными свойствами. Рассмотрим следующий пример, в котором сведения о пользователе представлены в виде ассоциативного массива.
$array_user = array();
$array_user["name"] = "smith john";
$array_user["username"] = "smith";
$array_user["id"] = "1002";
$array_user["email"] = "smith@nomail.com";
Если вам нужно использовать структуру так же, как и свойства объекта, вы можете использовать stdClass, как показано ниже.
$obj_user = new stdClass;
$obj_user->name = "smith john";
$obj_user->username = "smith";
$obj_user->id = "1002";
$obj_user->email = "smith@nomail.com";
Ответ 5
StdClass позволяет создавать анонимные классы, и с помощью приведения объектов можно получить доступ к ключам ассоциативного массива в стиле ООП. Точно так же, как если бы вы получили доступ к обычному свойству объекта.
Пример:
class Example {
private $options;
public function __construct(Array $setup) {
// приведение массива к объекту stdClass
$this->options = (object) $setup;
// доступ к объекту stdClass в стиле ООП - здесь преобразование данных в стиле ООП с помощью какого-то пользовательского метода или чего-то еще...
echo $this->options->{'name'}; // ->{'key'}
echo $this->options->surname; // ->key
}
}
$ob1 = new Example(["name" => "John", "surname" => "Doe"]);
Web