(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
var_export — Bir değişkenin çözümlenebilir dizge gösterimini döndürür veya çıktılar
var_export() işlevi belirtilen değişken hakkında yapı bilgisi döndürür. Dönen gösterimin geçerli bir PHP kodu olması dışında var_dump() işlevine benzer.
ifade
Bilgi edinmek istenen değişken.
döndür
true
belirtilmişse, var_export() işlevi değişken gösterimini çıktılamak yerine döndürür.
Bilginize:
Bu işlev bu bağımsız değişken ile bir dahili çıktı tamponu kullanır, dolayısıyla ob_start() geriçağırım işlevinin içinde kullanılamaz.
döndür
bağımsız değişkeninde true
belirtildiğinde değişkenin gösterimini döndürür. Aksi takdirde null
döndürür.
Sürüm: | Açıklama |
---|---|
8.2.0 | Dışa aktarılan sınıf adları artık tamamen niteleniyor, evvelce baştaki ters eğik çizgi konulmazdı. |
7.3.0 | Artık stdClass nesneleri, mevcut olmayan stdClass::__setState() yöntemini kullanmak yerine nesneye dönüştürülmüş bir dizi olarak ((object) array( ... ) ) dışa aktarılıyor. Bunun uygulamadaki etkisi, stdClass'ın dışa aktarılabilmesi ve ortaya çıkan kodun PHP'nin önceki sürümlerinde bile çalışabilmesidir. |
Örnek 1 - var_export() örnekleri
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_export($a);
?>
Yukarıdaki örneğin çıktısı:
array ( 0 => 1, 1 => 2, 2 => array ( 0 => 'a', 1 => 'b', 2 => 'c', ), )
<?php
$b = 3.1;
$v = var_export($b, true);
echo $v;
?>
Yukarıdaki örneğin çıktısı:
3.1
Örnek 2 - stdClass'ın dışa aktarılması (PHP 7.3.0'den beri)
Örnek 3 Exporting stdClass (since PHP 7.3.0)
<?php
$person = new stdClass;
$person->name = 'ElePHPant ElePHPantsdotter';
$person->website = 'https://php.net/elephpant.php';
var_export($person);
Yukarıdaki örneğin çıktısı:
(object) array( 'name' => 'ElePHPant ElePHPantsdotter', 'website' => 'https://php.net/elephpant.php', )
Örnek 4 - Sınıfların dışa aktarılması
<?php
class A { public $var; }
$a = new A;
$a->var = 5;
var_export($a);
?>
Yukarıdaki örneğin çıktısı:
A::__set_state(array( 'var' => 5, ))
Örnek 5 - __set_state() kullanımı
<?php
class A
{
public $var1;
public $var2;
public static function __set_state($an_array)
{
$obj = new A;
$obj->var1 = $an_array['var1'];
$obj->var2 = $an_array['var2'];
return $obj;
}
}
$a = new A;
$a->var1 = 5;
$a->var2 = 'foo';
eval('$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array(
Yukarıdaki örneğin çıktısı:
object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" }
Bilginize:
resource türündeki değişkenler bu işlev ile çıktılanamaz.
Bilginize:
var_export() işlevi, döngüsel gönderimler için PHP'nin çözümlenebilir bir kod üretmesi imkansıza yakın olduğundan bu tür döngüler işleme sokulmaz. Bir dizi veya nesnenin dizgesel gösterimi üzerinde işlemler yapmak istiyorsanız serialize() işlevini kullanın.
PHP 8.2.0 öncesinde, var_export() nesneleri dışa aktarırken, azami uyumluluk için, isim alanlı sınıfların sınıf ismine baştaki ters eğik çizgileri dahil etmiyordu.
Bilginize:
var_export() tarafından üretilen kodu değerlendirebilmek için, işlenen tüm nesnelerin sihirli __set_state yöntemini gerçeklemesi gerekir. Tek istisnası, nesneye dönüştürülmüş bir dizi kullanılarak dışa aktarılan stdClass'tır.