Php что такое stdclass

Что такое stdClass в PHP?

Я хочу узнать, что такое stdClass в PHP?

Ответ 1

stdClass — это общий чистый класс PHP, вроде как Object в Java или O bject в Python (но на самом деле не используется в качестве универсального базового класса).

Это полезно для анонимных объектов, динамических свойств и т. д.

Простой способ рассмотреть StdClass — это альтернатива ассоциативному массиву , см. пример ниже, в котором показано, как json_decode() получает экземпляр StdClass.

//Пример с 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;

После этого кода можно показать другой класс, который инициализируется объектом страницы и выполняет на нем базовый код.

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->; // ->

echo $this->options->surname; // ->key

>

>

$ob1 = new Example([«name» => «John», «surname» => «Doe»]);

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Класс stdClass

Пустой класс общего назначения с динамическими свойствами.

Объекты класса могут быть инициализированы с помощью оператора new или созданы с помощью преобразования в объект. Некоторые функции PHP также создают экземпляры этого класса, например, функции json_decode() , mysqli_fetch_object() или PDOStatement::fetchObject() .

Несмотря на отсутствие реализации магических методов __get()/__set(), класс позволяет использовать динамические свойства и не требует атрибута #[\AllowDynamicProperties] .

Это не базовый класс, поскольку в PHP нет понятия универсального базового класса. Однако можно создать пользовательский класс, который расширяет stdClass и в результате наследует функциональность динамических свойств.

Обзор классов

У класса нет методов или свойств по умолчанию.

Примеры

Пример #1 Создание в результате преобразования в объект

Результат выполнения данного примера:

object(stdClass)#1 (1) < ["foo"]=>string(3) "bar" >

Пример #2 Создание в результате работы функции json_decode()

Результат выполнения данного примера:

object(stdClass)#1 (1) < ["foo"]=>string(3) "bar" >

Пример #3 Объявление динамических свойств

Результат выполнения данного примера:

object(stdClass)#1 (2) < ["foo"]=>int(42) ["1"]=> int(42) >

User Contributed Notes 1 note

In PHP8 this has been changed

A number of warnings have been converted into Error exceptions:

Attempting to write to a property of a non-object. Previously this implicitly created an stdClass object for null, false and empty strings.

So if you add properties to a $var, you first need to make it a stdClass()

$var = new stdClass();
$var->propp1 = «nice»;
$var->propp2 = 1234;

Источник

What is stdClass in PHP?

stdClass is a handy feature provided by PHP to create a regular class. It is a predefined ’empty’ class used as a utility class to cast objects of other types. It has no parents, properties, or methods. It also does not support magic methods and does not implement any interfaces.

Creating stdClass Object

In the following example, stdClass is used instead of an array to store details:

name= 'W3schools'; $obj->extension= 'In'; var_dump($object); ?>
object(stdClass)#1 (2) < ["name"]=>string(9) "W3schools" ["extension"]=> string(2) "In" >
  • If an object is converted to an object using stdClass, it is not modified.
  • If the given value is NULL, the new instance will also be empty.
  • Arrays convert to an object with properties named by keys and associated values. It’s like the alternative to associative arrays.
  • The member named scalar will contain the value for any other type of value.

Creating a stdClass Object by Type Casting

The following example shows that the value will be available in a member named Scalar when typecasting another type into an object:

object(stdClass)#1 (1) < ["scalar"]=>string(9) "W3schools" >

Convert an Array into an Object

In the following example, an array is converted to an object by typecasting:

'W3schools', 'Extension'=>'In', ); $obj= (object) $obj; var_dump($obj); ?>
object(stdClass)#1 (2) < ["name"]=>string(9) "W3schools" ["Extension"]=> string(2) "In" >

Convert an Object into an Array

In the following example, an object is converted to an array by typecasting:

name= 'W3schools'; $obj->extension= 'In'; $data = (array) $obj; print_r($data); ?>
Array( [name] => W3schools [extension] => In )

PHP differs from other object-oriented languages because classes in PHP do not automatically derive from any class. All PHP classes are standalone unless they are explicitly extended from another class. Here you can think of defining a class that expands stdClass, but it won’t give you any benefit because stdClass does nothing.

Источник

Читайте также:  Combobox значение по умолчанию python
Оцените статью