PHP: Hypertext Preprocessor (original) (raw)

The stdClass class

(PHP 4, PHP 5, PHP 7, PHP 8)

Introduction

A generic empty class with dynamic properties.

Objects of this class can be instantiated withnew operator or created bytypecasting to object. Several PHP functions also create instances of this class, e.g.json_decode(), mysqli_fetch_object() or PDOStatement::fetchObject().

Despite not implementing__get()/__set() magic methods, this class allows dynamic properties and does not require the#[\AllowDynamicProperties] attribute.

This is not a base class as PHP does not have a concept of a universal base class. However, it is possible to create a custom class that extends fromstdClass and as a result inherits the functionality of dynamic properties.

Class synopsis

This class has no methods or default properties.

Examples

Example #1 Created as a result of typecasting to object

<?php $obj = (object) array('foo' => 'bar'); var_dump($obj);

The above example will output:

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

Example #2 Created as a result of json_decode()

<?php $json = '{"foo":"bar"}'; var_dump(json_decode($json));

The above example will output:

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

Example #3 Declaring dynamic properties

<?php $obj = new stdClass(); $obj->foo = 42; $obj->{1} = 42; var_dump($obj);

The above example will output:

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

Found A Problem?

Mats M ΒΆ

2 years ago

`In PHP8 this has been changed

https://www.php.net/manual/en/migration80.incompatible.php

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;

`