بسم الله
في بداية تعلمي للغة البرمجة php
قابلتني بعض المشاكل منها هذه المشكلة
احياناً كنت آتي بسكربتات جاهزة وكنت احاول ان اتعلم من الكود لأعرف كيف تعمل ولكن كانت تمر على أشياء لا أفهمها وكنت وقتها أحوال البحث على النت لمعرفة معنها واحترت حتى وصلت وقتها خاصة لو كتبنا العلامة & قبل الـ =
فأحببت أن أكتب هنا الثلاثة أشكال التي نراها بالأكواد كثيراً لعلنا نستفبد منها
أولاً
في بداية تعلمي للغة البرمجة php
قابلتني بعض المشاكل منها هذه المشكلة
احياناً كنت آتي بسكربتات جاهزة وكنت احاول ان اتعلم من الكود لأعرف كيف تعمل ولكن كانت تمر على أشياء لا أفهمها وكنت وقتها أحوال البحث على النت لمعرفة معنها واحترت حتى وصلت وقتها خاصة لو كتبنا العلامة & قبل الـ =
فأحببت أن أكتب هنا الثلاثة أشكال التي نراها بالأكواد كثيراً لعلنا نستفبد منها
أولاً
$var = "أهلاً" ;
$var .="وسهلاً";ففي الحالة العادية ان كتبنا هذا الكود بالطريقة الآتية
نأتي لأخر علامة بشرحنا هنا وهى العلامة @
وهى تعني تجاهل رسائل الخطأ
بمعنى انه اذا كانت هناك رسالة خطأ سوف تولد من كود ما فلو سبقت هذا الكود بعلامة @
لن تأتي رسالة الخطأ مثلا
وبهذا أكون قد أنهيت شرحي لهذه النقطة وأسأل الله أن أكون قد وفقت فيها
$var = "أهلاً" ; $var ="وسهلاً";
ستكون القيمة المخزنة في المتغير var
وسهلاً
أما في الحالة الأولى اى الحالة التي كتبنا بها النقطة قبل اليساوي فالمتغير var
سوف يتم الجمع فيه بين القيمة القديمة والقيمة الجديدة
وتكون القيمة المخزنة به هى
أهلا وسهلاً
وبهذا لامسنا الفرق بين الاثنين
فيجب أن نلاحظ أن الجمع هنا تعني الدمج في الكتابة وليس الجمع بجمع قيم
مثلا
$var = 1 ;
$var .=2;
ستكون القيمة المخزنة بالمتغير var تساوي 12 وليس 3
فهى لمجرد السرد للقيم بعد بعضها
والان نبدأ بالحديث عن الشكل الآخر الذي ربما يمر علينا بالكود ولا نعرف معناه مثل الشكل التالي
فكما نلاحظ نجد ان العلامة &
سبقت أسم المتغير وكذلك كتبت قبل علامة المتغير $
function add(&$num) { $num++; } $number = 1; add($number); echo $number;
كنت اتحير من هذه العلامة قبل المتغير وكنت أحاول ان أعرف ما فائدتها
والان سأوضح هذه الفائدة إن شاء الله لمن خفيت عليه
نحن نعرف انه يوجد ما يسمى بمدى المتغير variable scope
وهو عبارة عن المدى الذي يكون به المتغير محتفظ بآخر قيمة كانت به
وبتوضيح أكثر مثلا المتغير داخل الدالة يكون مداه داخل الدالة فقط أما خارجها فلن يحتفظ بنفس قيمته خارج الدالة
فمثلا
function test($a){ $b = $a + 5 ; }
فكما نرى هذه دالة اسمها test وله باراميتر واحد وهو a وبداخلها أضفنا المتغير b الذي يساوي قيمة a مجموع عليها 5
فلو كتبنا الكود التالي
test(4);
بما يعني اننا سننفذ هذه الدالة بالقيمة 4 للمتغير a
فتكون قيمة المتغير b تساوي 9
فلو كتبنا بعد السطر السابق
echo $b;
فلن نجد خرج لهذا الكود بمعنى ان قيمة المتغير b فارغة
مع انه له قيمة داخل الدالة وهذا لان مدى المتغير b داخل الدالة فقط
أما لو كتبنا الكود الذي مثلنا به أولا
function add(&$num) { $num++; } $number = 1; add($number); echo $number;
لو كان هذا الكود بدون العلامة & قبل اسم الباراميتر
ستكون قيمة المتغير number تساوي 1
لاننا بعدما نادينا على الدالة في السطر
add($number);تغيرت قيمة المتغير number
لكن مداه بعد التغير كان داخل الدالة
أما لو كتبناها كما بالمثال وكتبنا العلامة &
قبل الباراميتر
ستكون قيمة المتغير number
بعد تنفيذ الدالة هى قيمته داخل الدالة اى سيساوي 2
وهذا يعني اننا بهذا نوسع مدىالمتغير من داخل الدالة الى الصفحة ككل
ونستطيع ان نقول أن الأمر يشبه وكأننا جعلنا المتغير b
داخل الدالة global
نأتي لأخر علامة بشرحنا هنا وهى العلامة @
وهى تعني تجاهل رسائل الخطأ
بمعنى انه اذا كانت هناك رسالة خطأ سوف تولد من كود ما فلو سبقت هذا الكود بعلامة @
لن تأتي رسالة الخطأ مثلا
فيي العادة سوف تأتي رسالة خطأ إن لم يكن الملف file.php موجود على المسار المحدد بالدالة include ولكن ما مدى سبقنا الدالة بالعلامة @ فلن يظهر هذا الخطأ@include("file.php")
وبهذا أكون قد أنهيت شرحي لهذه النقطة وأسأل الله أن أكون قد وفقت فيها



1 comments:
بارك الله لك في مجهوداتك الطيبة
حقيقة المعلومات مفيدة جدا وخاصة للمبتدئين
وفقك الله لكل خير وأعانك
إرسال تعليق