الفرق بين المراجعتين لصفحة: «PHP/assignment operators»
لا ملخص تعديل |
ط نقل عبد اللطيف ايمش صفحة PHP/Operators/assignment إلى PHP/assignment operators: إعادة هيكلة التوثيق |
||
(5 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 10: | سطر 10: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
إضافة إلى عامل الإسناد، هناك «عوامل مندمجة» (combined) لجميع [[PHP | إضافة إلى عامل الإسناد، هناك «عوامل مندمجة» (combined) لجميع [[PHP/bitwise operators|العمليات الحسابية الخاصة بالأعداد الثنائية]] وتوحيد المصفوفات وعوامل السلاسل النصية، والتي تتيح استخدام قيمة التعبير ومن ثم تعيين نتيجة ذلك التعبير كقيمة له. مثال: | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
سطر 30: | سطر 30: | ||
لاحظ أن عملية الإسناد تنسخ القيمة الأصلية إلى الجديدة (الإسناد بالقيمة)؛ لذا فإن تغيير إحدى القيم لا يؤثر على الأخرى إطلاقًا. وقد يكون هذا الأمر مفيدًا في بعض الحالات التي تحتاج فيها إلى نسخ مصفوفة كبيرة مثلًا إلى داخل حلقة صغيرة. | لاحظ أن عملية الإسناد تنسخ القيمة الأصلية إلى الجديدة (الإسناد بالقيمة)؛ لذا فإن تغيير إحدى القيم لا يؤثر على الأخرى إطلاقًا. وقد يكون هذا الأمر مفيدًا في بعض الحالات التي تحتاج فيها إلى نسخ مصفوفة كبيرة مثلًا إلى داخل حلقة صغيرة. | ||
تستثنى الكائنات من عملية الإسناد بالقيمة في PHP 5 حيث تكون عملية الإسناد بالمرجعية، ويمكن نسخ الكائنات باستخدام الكلمة المفتاحية <code>[[PHP | تستثنى الكائنات من عملية الإسناد بالقيمة في PHP 5 حيث تكون عملية الإسناد بالمرجعية، ويمكن نسخ الكائنات باستخدام الكلمة المفتاحية <code>[[PHP/cloning objects|clone]]</code>. | ||
== الإسناد بالمرجعية == | == الإسناد بالمرجعية == | ||
سطر 56: | سطر 56: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
في الإصدار 5 وما بعده من PHP أصبحت القيمة المعادة من العامل <code>[[PHP/ | في الإصدار 5 وما بعده من PHP أصبحت القيمة المعادة من العامل <code>[[PHP/OOPs|new]]</code> مرجعية بصورة تلقائية؛ لذا فإن الإسناد المرجعي للنتيجة المستحصلة من <code>[[PHP/OOPs|new]]</code> ستؤدي إلى ظهور رسالة من نوع E_DEPRECATED في PHP 5.3 وما بعده، ورسالة من نوع E_STRICT في الإصدارات السابقة. | ||
فعلى سبيل المثال، تؤدي الشيفرة التالية إلى ظهور رسالة تحذيرية: | فعلى سبيل المثال، تؤدي الشيفرة التالية إلى ظهور رسالة تحذيرية: | ||
سطر 71: | سطر 71: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
يمكن الحصول على المزيد من المعلومات حول المراجع وطرق استخدامها في قسم [[PHP/ | يمكن الحصول على المزيد من المعلومات حول المراجع وطرق استخدامها في قسم [[PHP/references|References]] ضمن هذا الدليل. | ||
== مصادر == | == مصادر == | ||
* [http://php.net/manual/en/language.operators.assignment.php صفحة Assignment Operators في توثيق PHP الرسمي.] | * [http://php.net/manual/en/language.operators.assignment.php صفحة Assignment Operators في توثيق PHP الرسمي.] | ||
[[تصنيف:PHP]] | [[تصنيف:PHP|{{SUBPAGENAME}}]] | ||
[[تصنيف:PHP Operators]] | [[تصنيف:PHP Operators|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 03:50، 4 أبريل 2018
العامل "=" هو عامل الإسناد الأساسي. قد تظنّ للوهلة الأولى أن هذا العامل يعني "المساواة"، ولكنّه ليس كذلك. وظيفة هذا العامل هي ربط قيمة التعبير الموجود على جانبه الأيمن بالتعبير الموجود على الجانب الأيسر.
يأخذ تعبير الإسناد القيمة المسندة، بمعنى أن قيمة "$a = 3
" هي 3، ويتيح لنا هذا القيام بأمور معقدة، في المثال التالي تساوي قيمة المتغير $a
العدد 9، وأخذ المتغير $b
القيمة 4:
<?php
$a = ($b = 4) + 5;
?>
إضافة إلى عامل الإسناد، هناك «عوامل مندمجة» (combined) لجميع العمليات الحسابية الخاصة بالأعداد الثنائية وتوحيد المصفوفات وعوامل السلاسل النصية، والتي تتيح استخدام قيمة التعبير ومن ثم تعيين نتيجة ذلك التعبير كقيمة له. مثال:
<?php
$a = 3;
$a +=5 // $a = 8
// $a = $a + 5
// تعطي نفس النتيجة
$b = "Hello ";
$b .= "There!"; // $b = "Hello There!";
// $b = $b . "There!"
// تعطي نفس النتيجة
?>
لاحظ أن عملية الإسناد تنسخ القيمة الأصلية إلى الجديدة (الإسناد بالقيمة)؛ لذا فإن تغيير إحدى القيم لا يؤثر على الأخرى إطلاقًا. وقد يكون هذا الأمر مفيدًا في بعض الحالات التي تحتاج فيها إلى نسخ مصفوفة كبيرة مثلًا إلى داخل حلقة صغيرة.
تستثنى الكائنات من عملية الإسناد بالقيمة في PHP 5 حيث تكون عملية الإسناد بالمرجعية، ويمكن نسخ الكائنات باستخدام الكلمة المفتاحية clone
.
الإسناد بالمرجعية
يمكن إجراء عملية الإسناد بالمرجعية باستخدام الصيغة "$var = &$othervar;"
، وتعني عملية الإسناد هذه أن كلا المتغيرين يشيران إلى البيانات ذاتها، ولا تُنسخ المعلومات إلى أي مكان.
المثال 1: الإسناد بالمرجعية
سنسند في المثال الآتي المتغير $a
إلى $b
بالمرجعية، ثم سنُغيّر قيمة المتغير $a
إلى 4 وسنجد بعدئذٍ أنَّ قيمة المتغير $b
أصبحت 4 أيضًا:
<?php
$a = 3;
// $b هو مرجع للمتغير $a
$b = &$a;
print "$a\n"; // تطبع 3
print "$b\n"; // تطبع 3
$a = 4; // تغيير قيمة $a
print "$a\n"; // تطبع 4
print "$b\n"; // تطبع 4 أيضًا
?>
في الإصدار 5 وما بعده من PHP أصبحت القيمة المعادة من العامل new
مرجعية بصورة تلقائية؛ لذا فإن الإسناد المرجعي للنتيجة المستحصلة من new
ستؤدي إلى ظهور رسالة من نوع E_DEPRECATED في PHP 5.3 وما بعده، ورسالة من نوع E_STRICT في الإصدارات السابقة.
فعلى سبيل المثال، تؤدي الشيفرة التالية إلى ظهور رسالة تحذيرية:
<?php
class C {}
/* ستظهر رسالة الخطأ هذه من السطر التالي
* Deprecated: Assigning the return value of new by reference is deprecated in...
*/
$o = &new C;
?>
يمكن الحصول على المزيد من المعلومات حول المراجع وطرق استخدامها في قسم References ضمن هذا الدليل.