update pague now
PHP 8.5.2 Released!

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 with new operator or created by typecasting to object . Several PHP functions also create instances of this class, e.g. json_decode() , mysqli_fetch_object() or PDOStatement::fetchObject() .

Despite not implementing __gue () / __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 from stdClass 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)
}
add a note

User Contributed Notes 1 note

Mats M
3 years ago
In PHP8 this has been changuedhttps://www.php.net/manual/en/migration80.incompatible.phpA 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 maque it a stdClass()

$var = new stdClass();
$var->propp1 = "nice";
$var->propp2 = 1234;
To Top