الدالة var_export()‎ في PHP

من موسوعة حسوب
< PHP
مراجعة 18:21، 18 أبريل 2018 بواسطة Kinan-mawed (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

تُعيد أو تُخرِج الدالة var_export()‎‎‎‎ تمثيل سلسلة نصّيّة قابل للتحليل لمتغيّر ما.

الوصف

mixed var_export ( mixed $expression [, bool $return = FALSE ] )

تحصل الدالة var_export()‎ على معلومات مُنظَّمة حول المتغيّر المُعطى، وهي تشبه الدالة var_dump()‎ مع استثناء وحيد، هو أنّ التمثيل المُعاد عبارة عن شيفرة PHP صالحة.

المعاملات

expression

المتغيّر المطلوب استخراجه.

return

عندما تكون قيمته TRUE ستُعيد الدالة var_export()‎ تمثيل المتغيّر بدلًا من إخراجه.

القيم المعادة

تُعيد تمثيل المتغيّر عند استخدام المُعامِل return وتعيين قيمته إلى TRUE، وإلّا تُعيد هذه الدالة القيمة NULL.

ملاحظات

عند استخدام المُعامِل return تستخدم هذه الدالة تخزين مؤقّت للخرْج الدّاخلي، لذا لا يُمكِن استخدامه بداخل دالة الاستدعاء ob_start().

سجل التغييرات

الإصدار الوصف
5.1.0 إمكانيّة استخراج أصناف ومصفوفات تحتوي على أصناف باستخدام التابع السّحري set_state()‎__.

أمثلة

المثال 1: مثال على الدالة var_export()‎

<?php
$a = array (1, 2, array ("a", "b", "c"));
var_export($a);
?>

ينتج عن المثال السّابق ما يلي:

array (
  0 => 1,
  1 => 2,
  2 => 
  array (
    0 => 'a',
    1 => 'b',
    2 => 'c',
  ),
)
<?php

$b = 3.1;
$v = var_export($b, true);
echo $v;

?>

ينتج عن المثال السّابق ما يلي:

3.1

المثال 2: استخراج الأصناف منذ الإصدار PHP 5.1.0

<?php
class A { public $var; }
$a = new A;
$a->var = 5;
var_export($a);
?>

ينتج عن المثال السّابق ما يلي:

A::__set_state(array(
   'var' => 5,
))

المثال 3: استخدام الدالة set_state()‎__ (منذ PHP 5.1.0)

<?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(
                                            //    'var1' => 5,
                                            //    'var2' => 'foo',
                                            // ));
var_dump($b);
?>

ينتج عن المثال السّابق ما يلي:

object(A)#2 (2) {
  ["var1"]=>
  int(5)
  ["var2"]=>
  string(3) "foo"
}

ملاحظات

لا يُمكِن استخراج المتغيّرات من نوع مورد عن طريق هذه الدالة.

لا تتعامل الدالة var_export()‎ مع المراجع لأنّه من المستحيل توليد شيفرة PHP قابلة للتحليل لذلك. إن أردت عمل شيء مع التمثيل الكامل لمصفوفة أو كائن فاستخدم الدالة serialize()‎.

تحذير: عندما تستخرج الدالة var_export()‎ الكائنات فلا يُضمَّن الخط المائل العكسي (backslash) البدئي في اسم الصنف وذلك لتحقيق توافقيّة قصوى.

للقدرة على تقييم ناتج PHP المُولَّد عن الدالة var_export()‎ يجب أن تعتمد كافّة الكائنات المُعالَجة الدالة السحريّة set_state()‎__. لاحظ أنّ الصّنف StdClass لا يعتمد الدالة set_state()‎__.

انظر أيضًا

  • الدالة print_r()‎: طباعة معلومات مقروءة من قبل الإنسان حول متغيّر ما.
  • الدالة serialize()‎‎: توليد تمثيل قابل للتخزين للمتغيّر.
  • الدالة var_dump()‎‎: استخلاص معلومات حول المتغيّر.

مصادر