الفرق بين المراجعتين ل"PHP/var export"

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الدالة <code>var_export()</code>‎ في PHP}}</noinclude>')
 
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:الدالة <code>var_export()</code>‎ في PHP}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:الدالة <code>var_export()</code>‎ في PHP}}</noinclude>
 +
(PHP 4 >= 4.2.0, PHP 5, PHP 7)
 +
 +
تُعيد أو تُخرِج الدالة <code>var_export()‎‎‎‎</code> تمثيل سلسلة نصّيّة قابل للتحليل لمتغيّر ما.
 +
 +
== الوصف ==
 +
<syntaxhighlight lang="php">
 +
mixed var_export ( mixed $expression [, bool $return = FALSE ] )
 +
 +
</syntaxhighlight>تحصل الدالة <code>var_export()</code>‎ على معلومات مُنظَّمة حول المتغيّر المُعطى، وهي تشبه الدالة <code>var_dump()</code>‎ مع استثناء وحيد، هو أنّ التمثيل المُعاد عبارة عن شيفرة PHP صالحة.
 +
 +
== المعاملات ==
 +
 +
=== <code>expression</code> ===
 +
المتغيّر المطلوب استخراجه.
 +
 +
=== <code>return</code> ===
 +
عندما تكون قيمته <code>TRUE</code> ستُعيد الدالة <code>var_export()‎</code> تمثيل المتغيّر بدلًا من إخراجه.
 +
 +
== القيم المعادة ==
 +
تُعيد تمثيل المتغيّر عند استخدام المُعامِل <code>return</code> وتعيين قيمته إلى <code>TRUE</code>، وإلّا تُعيد هذه الدالة القيمة <code>NULL</code>.
 +
 +
== ملاحظات ==
 +
عند استخدام المُعامِل <code>return</code> تستخدم هذه الدالة تخزين مؤقّت للخرْج الدّاخلي، لذا لا يُمكِن استخدامه بداخل دالة الاستدعاء <code>[[PHP/ob start|ob_start()]]‎</code>.
 +
 +
== سجل التغييرات ==
 +
{| class="wikitable"
 +
!الإصدار
 +
!الوصف
 +
|-
 +
|5.1.0
 +
|إمكانيّة استخراج أصناف ومصفوفات تحتوي على أصناف باستخدام التابع السّحري <code>[[PHP/magic#.E2.80.8E set state.28.29.E2.80.8E|set_state()‎__]]</code>.
 +
|}
 +
 +
== أمثلة ==
 +
المثال 1: مثال على الدالة <code>var_export()‎</code><syntaxhighlight lang="php">
 +
<?php
 +
$a = array (1, 2, array ("a", "b", "c"));
 +
var_export($a);
 +
?>
 +
 +
</syntaxhighlight>ينتج عن المثال السّابق ما يلي:<syntaxhighlight lang="text">
 +
array (
 +
  0 => 1,
 +
  1 => 2,
 +
  2 =>
 +
  array (
 +
    0 => 'a',
 +
    1 => 'b',
 +
    2 => 'c',
 +
  ),
 +
)
 +
 +
</syntaxhighlight><syntaxhighlight lang="php">
 +
<?php
 +
 +
$b = 3.1;
 +
$v = var_export($b, true);
 +
echo $v;
 +
 +
?>
 +
 +
</syntaxhighlight>ينتج عن المثال السّابق ما يلي:<syntaxhighlight lang="text">
 +
3.1
 +
 +
</syntaxhighlight>المثال 2: استخراج الأصناف منذ الإصدار PHP 5.1.0<syntaxhighlight lang="php">
 +
<?php
 +
class A { public $var; }
 +
$a = new A;
 +
$a->var = 5;
 +
var_export($a);
 +
?>
 +
 +
</syntaxhighlight>ينتج عن المثال السّابق ما يلي:<syntaxhighlight lang="text">
 +
A::__set_state(array(
 +
  'var' => 5,
 +
))
 +
 +
</syntaxhighlight>المثال 3: استخدام الدالة <code>[[PHP/magic#.E2.80.8E set state.28.29.E2.80.8E|set_state()‎__]]</code> (منذ PHP 5.1.0)<syntaxhighlight lang="php">
 +
<?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);
 +
?>
 +
 +
</syntaxhighlight>ينتج عن المثال السّابق ما يلي:<syntaxhighlight lang="text">
 +
object(A)#2 (2) {
 +
  ["var1"]=>
 +
  int(5)
 +
  ["var2"]=>
 +
  string(3) "foo"
 +
}
 +
 +
</syntaxhighlight>
 +
 +
== ملاحظات ==
 +
لا يُمكِن استخراج المتغيّرات من نوع [[PHP/resource|مورد]] عن طريق هذه الدالة.
 +
 +
لا تتعامل الدالة <code>var_export()</code>‎ مع المراجع لأنّه من المستحيل توليد شيفرة PHP قابلة للتحليل لذلك. إن أردت عمل شيء مع التمثيل الكامل لمصفوفة أو كائن فاستخدم الدالة <code>[[PHP/serialize|serialize()]]</code>‎.
 +
 +
تحذير: عندما تستخرج الدالة <code>var_export()</code>‎ الكائنات فلا يُضمَّن الخط المائل العكسي (backslash) البدئي في اسم الصنف وذلك لتحقيق توافقيّة قصوى.
 +
 +
للقدرة على تقييم ناتج PHP المُولَّد عن الدالة <code>var_export()‎</code> يجب أن تعتمد كافّة الكائنات المُعالَجة الدالة السحريّة <code>[[PHP/magic#.E2.80.8E set state.28.29.E2.80.8E|set_state()‎__]]</code>. لاحظ أنّ الصّنف <code>StdClass</code> لا يعتمد الدالة <code>[[PHP/magic#.E2.80.8E set state.28.29.E2.80.8E|set_state()‎__]]</code>.
 +
 +
== انظر أيضًا ==
 +
* الدالة <code>[[PHP/print r|print_r()]]</code>‎: طباعة معلومات مقروءة من قبل الإنسان حول متغيّر ما.
 +
* الدالة <code>[[PHP/serialize|serialize()‎]]</code>‎: توليد تمثيل قابل للتخزين للمتغيّر.
 +
* الدالة <code>[[PHP/var dump|var_dump()‎]]</code>‎: استخلاص معلومات حول المتغيّر.
 +
 +
== مصادر ==
 +
* [http://php.net/manual/en/function.var-export.php صفحة الدالة var_export في توثيق PHP الرسمي].
 +
[[تصنيف:PHP]]
 +
[[تصنيف:PHP Function]]
 +
[[تصنيف:PHP Variable Handling]]

المراجعة الحالية بتاريخ 18:21، 18 أبريل 2018

(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()‎‎: استخلاص معلومات حول المتغيّر.

مصادر