Statement on glibc/iconv Vulnerability

stdClass sınıfı

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

Giriş

Dinamik özellikleri olabilen boş genel sınıf.

Bu sınıfın nesneleri new işleci ile örneklenerek veya nesneye dönüşümle oluşturulabilir. Ayrıca, json_decode(), mysqli_fetch_object(), PDOStatement::fetchObject() gibi çeşitli PHP işlevleri de bu sınıfın örneklerini oluşturabilir.

__get()/__set() sihirli yöntemlerini uygulamamasına rağmen, bu sınıf dinamik özelliklere izin verir ve #[\AllowDynamicProperties] özniteliğini gerektirmez.

PHP'nin evrensel temel sınıf kavramı olmadığı için bu temel bir sınıf değildir. Ancak, stdClass'tan genişleyen ve sonuç olarak dinamik özelliklerin işlevselliğini devralan özel bir sınıf oluşturmak mümkündür.

Sınıf Sözdizimi

class stdClass {
}

Bu sınıfın yöntemleri ve öntanımlı özellikleri yoktur.

Örnekler

Örnek 1 - Tür dönüşümüyle nesneye dönüştürerek örnekleme

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

Yukarıdaki örneğin çıktısı:

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

Örnek 2 - json_decode() ile örnekleme

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

Yukarıdaki örneğin çıktısı:

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

Örnek 3 - Dinamik özelliklerin bildirilmesi

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

Yukarıdaki örneğin çıktısı:

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

User Contributed Notes 1 note

up
7
Mats M
1 year 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;
To Top