Php stdClass Nesnesi ( stdClass Nesnesi – Dizi Dönüşümleri )

stdClass nesneleri, PHP Predefined Classlara aittir. Dizileri (array) nesnelere çevirmek, yada nesneleri dizilere çevirmek, çalışmamıza bağlı olarak çok kullanışlı olabilir. Dizi veya nesne tek boyutluysa (one-dimensional), işimiz oldukça kolaydır. Fakat bunlar çok boyutlularsa (multi-dimensional) işimiz biraz zorlaşabilir.

Aşağıda çok boyutlu dizileri ve nesneleri birbirine dönüştüren 2 fonksiyon paylaşıyorum. Sonrasında da kullanımlarına örnek vereceğim.

Nesneyi Diziye Dönüştürmece

< ?php
 
	function objectToArray($d) {
		if (is_object($d)) {
			// Gelen nesnenin özelliklerini get_object_vars metodu
                        // ile alırız
			$d = get_object_vars($d);
		}
 
		if (is_array($d)) {
			// Nesneden diziye çevirilmiş veriyi döndürür
                        // burdaki __FUNCTION__ bir magic constanttır.
                        // recursive gibi kendini çağırır
			return array_map(__FUNCTION__, $d);
		}
		else {
			// Return array
			return $d;
		}
	}
 
?>

Diziyi Nesneye Dönüştürmece

< ?php
 
	function arrayToObject($d) {
		if (is_array($d)) {
			// diziyi nesne olarak kendine döndürür
                        // __FUNCTION__ magic constanttır.
			return (object) array_map(__FUNCTION__, $d);
		}
		else {
			// Return object
			return $d;
		}
	}
 
?>

Fonksyionların kullanımı

// stdClass nesnesi yaratıyoruz
	$init = new stdClass;
 
	// bir kaç veri ekliyoruz
	$init->foo = "Test data";
	$init->bar = new stdClass;
	$init->bar->baaz = "Testing";
	$init->bar->fooz = new stdClass;
	$init->bar->fooz->baz = "Testing again";
	$init->foox = "Just test";
 
	// nesneyi diziye dönüştürme
	$array = objectToArray($init);
        
        // diziyi nesneye dönüştürme
	$object = arrayToObject($array);
 
	// Print objects and array
	print_r($init);
	echo "\n";
	print_r($array);
	echo "\n";
	print_r($object);

Çıktıları ise şu şekilde olmakta ;

// $init 
stdClass Object
(
    [foo] => Test data
    [bar] => stdClass Object
        (
            [baaz] => Testing
            [fooz] => stdClass Object
                (
                    [baz] => Testing again
                )

        )

    [foox] => Just test
)

// $array
Array
(
    [foo] => Test data
    [bar] => Array
        (
            [baaz] => Testing
            [fooz] => Array
                (
                    [baz] => Testing again
                )

        )

    [foox] => Just test
)

// $object
stdClass Object
(
    [foo] => Test data
    [bar] => stdClass Object
        (
            [baaz] => Testing
            [fooz] => stdClass Object
                (
                    [baz] => Testing again
                )

        )

    [foox] => Just test
)

– Kaynak