المقصود باسترجاع القيم ( PHP RETURNING VALUE ) هو تسجيل القيم في ذاكرة مؤقتة لحين استخدامها ويتم ذلك داخل دالة ( PHP FUNCTINS ). للتبسيط تخيل أنك موظف بالأحوال المدنية وطلب منك مديرك معلومات عن المواطن محمد مثلاً, فإنك تذهب لمكان حفظ الملفات وتحضر الملف الخاص بالمواطن, ثم تقرأ محتواه وتسجله في ذاكرتك. لكنك لن تخبر المدير بهذه المعلومات إلا حين يطلب منك ذلك وفي أي وقت.
نفترض أننا قمنا بعمل دالة لجمع متغيرين x$ و y$ ثم تخصيص النتيجة لمتغير ثالث c$
<?php function add(){ $x=2; $y=3; $c=$x+$y; } add(); ?>عند تجربة الكود السابق لن يتم ظهور أي نتيجة للمتغير c$ وذلك لأننا لم نطلب طباعة القيمة باستخدام ( PHP ECHO ). الكود التالي سيعمل بشكل سليم
<?php function add(){ $x=2; $y=3; $c=$x+$y; echo $c;// طلب طباعة المتغير } add();أما إذا أردنا استخدام الاسترجاع return كما هو الحال في الكود التالي
<?php function add(){ $x=2; $y=3; $c=$x+$y; return $c;// طلب استرجاع المتغير } add(); ?>لن يقوم الكود السابق أيضاً بعرض النتيجة لأنه قام فقط بتخزين النتيجة في ذاكرته حتي تطلب أنت منه عرضها, وفي هذه الحالة يجب استخدام ( PHP ECHO ) قبل استدعاء الدالة بهذا الشكل
<?php function add(){ $x=2; $y=3; $c=$x+$y; return $c;// طلب استرجاع المتغير } echo add(); ?>وفي هذه الحالة تكون الدالة ()add هي بمثابة الموظف المطلوب منه استرجاع المعلومات , وتكون ( PHP ECHO ) هي المدير الذي يطلب من الموظف عرض المعلومات.
بالطبع هذا ليس المثال العملي الحقيقي لاستخدام الاسترجاع ولكنه لتوضيح فكرة أن الاسترجاع يستخدم للاحتفاظ بقيمة معينة بصورتها الخام دون طباعة أو إجراء أي عملية بحيث يمكنك تشكيلها فيما بعد لتخدم برنامجك.
تخيل أنك تريد عمل دالة بسيطة لتعريف متغير. ثم تريد تحويل الحرف الأول من قيمة هذا المتغير إلي حرف كبير Capital letter. لتحويل الحرف تستخدم دالة مسبقة الإعداد في php تدعي ( PHP UCFIRST ) .
أولاً سنقوم بتجربة الكود بدون استرجاع return , ولكن سنستخدم echo
<?php function uppercase(){ $x="hello"; echo $x; } $c= ucfirst (uppercase()); echo $c ?>سيقوم الكود السابق بطباعة “hello” بدون أي تعديل لأننا طبعنا المادة الخام (قيمة المتغير الأصلية) داخل الدالة وبالتالي لايمكن التعديل عليها عند محاولة استخدام التحويل ucfirst .
ثانياً سنقوم باستخدام الاسترجاع return
<?php function uppercase(){ $x="hello"; return $x; } $c= ucfirst (uppercase()); echo $c ?>الآن يتم طباعة “Hello” بعد تحويل الحرف الأول إلى حرف كبير.
استرجاع المصفوفات Returning arraysإذا كنا نستخدم دالة لتحويل أكثر من متغير إلي الأحرف الكبيرة ونريد استرجاع قيم هذه المتغيرات مرة واحدة, فيتم استرجاعها علي شكل مصفوفة ( PHP ARRAY ) , بهذا الشكل
<?php function uppercase(){ $x = ucfirst ('hello'); $y = ucfirst ('world'); return array($x,$y); } $c = uppercase(); echo"$c[0]<br>"; echo"$c[1]"; ?>يتم استرجاع المتغيرات باستخدام ( PHP ARRAY ), ثم تخصيص الدالة ()uppercase إلى المتغير c$ , فيصبح c$ عبارة عن مصفوفة يتم استرجاع بياناتها باستخدام الـ index .
للتأكد من أنه تم تخصيص المصفوفة للمتغير c$ يمكننا استخدام دالة مسبقة الإعداد وهي ( PHP print_r ) والتي تقوم بطباعة البيانات بصيغة يقرأها البشر , بحيث تكون r_ هي تعبير عن Human readable format . وبالتالي إذا قمت بتجربة الكود التالي
<?php function uppercase(){ $x = ucfirst ('hello'); $y = ucfirst ('world'); return array($x,$y); } $c = uppercase(); echo"$c[0]<br>"; echo"$c[1]<br>"; print_r ($c);//عرض معلومات المتغير بصيغة يقرأها البشر ?>وتصبح النتيجة كالآتي
Hello
World
Array ( [0] => Hello [1] => World )
تؤل جملة الاسترجاع ( PHP return ) إلى ايقاف تنفيذ الكود والرجوع للكود نفسه , أما إذا تم استخدامها داخل دالة وكان كود الدالة يحمل قيمة فتقوم return بتخزين هذه القيمة.