call time by refrence

السبت-10-2008

كثير من تطبيقات php تظهر رسالة الخطأ هذة

Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of foo(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in /var/www/localhost/htdocs/Proj/lab/bechmark.php on line 9

ماهى القضية ؟

الموضوع ببساطه هو فى هذا الكود

<?php
function foo(&$var){
$var=’NewValue’;
}

$MyVariable=’This is my value’;
foo(&$MyVariable);
var_dump($MyVariable);
?>

وبالتحديد فى هذا السطر

foo(&$MyVariable);

وبالتحديد اكثر فى علامة & او بالعربي الفصيح فى refrences

ماهو هذا ال refrence

عندما تمرر اى متغير بال refrence فإن اى تغيير فى تلك القيمة (المتغير) سوف يطرا ايضا على المتغير

اى ان قيمة $MyVariable سوف تتغير بعد تمريرها الى الداله foo فى المثال السابق

ما المشكله اذا ؟

المشكله ان تمرير المتغير بالـ refrence يعتمد على تعريق الداله نفسها وليس اثناء استخدامها

انظر الى تعريف الداله , هذا هو المهم  function foo(&$var){

علامة & هى التى حددت ان المتعير الذى سوف يتم تمريره اصبح بال refrence

اى انك غير محتاج الى تلك العلامه عند تمرير اى متغير الى الداله – وهذة العمليه يطلق عليها call time , اى انك تستخدمه اثناء البرمجه وليس عند تعريف الداله

بمعنى اخر المحرك يقول لك “والله عرفت انك عايزه refrence ارحمنى بقى “

قد يسال احد بما ان الموضوع يعتمد على تعريف الداله اذا ما السبب فى وجود & فى الكثير من التطبيقات اساسا

هو موجود فى حالة انك لم تقم بعمل هذا اثناء تعريف الداله بسبب كسلك قمت بعمل Call-time pass-by-reference

وهذا سوف يتم الغؤه مع محركات البى اتش بى فى الاصدارات القادمه

النتيجه : لا تستخدم Call-time pass-by-reference

Advertisements

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: