Web

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

Я хочу узнать, что такое 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"]);

Схожие статьи

Приложение Синтезатор речи Google: как пользоваться и как отключить?
Web

Приложение Синтезатор речи Google: как пользоваться и как отключить?

Web

Как использовать тернарный оператор (?:) в PHP как сокращение «if/else»

Поиск по GitHub: как найти репозитории, нужный код или разработчика?
Web

Поиск по GitHub: как найти репозитории, нужный код или разработчика?

Web

Как использовать символы Юникода в PHP строках

×