الحمد لله والصلاة والسلام على رسول الله
السلام عليكم ورحمة الله وبركاته
نبذة سريعة عن لغة PHP :
- هي لغة حرة مفتوحة المصدر ومجانية الإستخدام و مخصصة لتطوير تطبيقات الويب وبيئة تطويرها هي Linux
إن كانت لك سابقة عهود مع أي لغة برمجة لن تجد الأمر غريب لأن المنطق البرمجي واحد وأوامرها تشبه إلى حد كبير أمها لغة الـ C
إن كنت من مستخدمي أحد اللغات التالية - التي إطلعت عليها أنا - وهي java أو C أو ++C أو #C ستجد مرونة كبيرة توفرها هذه اللغة في التعامل بخلاف ما إعتدت عليه
أول ما سيصادفك من هذه المرونة أن هذه اللغة لا تحتاج لتعريف متغيرات فقط إسناد القيمة للمتغير وسيقوم مترجم اللغة بالتعرف على القيمة التي يحويها المتغير تلقائياً - كما سنرى بعد قليل -
ملاحظة : أوامر لغة PHP غير حساسة لحالة الأحرف بمعنى يمكنك الكتابة بالأحرف الكبيرة أو الصغيرة على حد سواء في أوامر اللغة
وبما أن صفحة الويب يمكن أن تتضمن أكواد غير أكواد لغة PHP إذاً يجب تنبية المترجم أين أكواد PHP ليتم التعرف عليها ولهذا عند كتابة أكواد PHP داخل الصفحة يجب تضمينها ضمن وسم الفتح <?php ووسم الإغلاق ?> هناك أيضاً الشكل المختصر ولكن تم إيقاف إستخدامه لتشغيله يجب عليك التعديل على ملف php.ini
وكما جرى العرف والعادة طباعة جملة إفتتاحية وغالباً تكون hello world ! لا أعلم حقيقاً لماذا ![]()
للطباعة على المتصفح نستخدم دالة echo بأقواس أو بدون أقواس كالتالي :
<?php
echo ("mostafa ");
echo "mohammed";
?>ضع هذا الكود في ملف وليكن باسم test.php ونفذ الكود
ملاحظة : يُسمح لك باستخدام المسافات الفارغة و الأسطر كيفما تشاء ولكن يجب أن يتم الفصل بين الأوامر البرمجية بالفاصلة المنقوطة ; ولا يشترط وضعها لأخر أمر برمجي
- يمكننا تطبيق وسوم الـ HTML وطباعتها كالتالي :
<?php echo "<div style='color:#F00;'>mostafa mohammed</div>"; ?>
- وقد قمت بإستبدال علامة الإقتباس المزدوجة إلى مفردة حتى لا يحدث تضارب بين العلامتين ويمكن أن يكون الكود أيضاً بهذا الشكل :
<?php echo '<div style="color:#F00;">mostafa mohammed</div>'; ?>
- وسيأتي الحديث عن الفرق بين الطريقتين لاحقاً
ويمكن أيضاً إستخدام العلامة \ قبل العلامة التي لا تريد أن يحدث لها تضارب مع علامة أخرى بهذا الشكل :
<?php echo "<div style=\"color:#F00;\">mostafa mohammed</div>"; ?>
للدمج نستخدم علامة النقطة . كالتالي :
<?php echo "Ahmed"."Mahmoud"; ?>
* التعليقات :
- تستخدم العلامتين // أو العلامة # لإضافة تعليق سطر واحد ويمكنك إستخدام بداية التعليق بالرمز /* وإنتهائه بالرمز */ لحصر ما بينهما
<?php // تعليق سطر واحد # تعليق سطر واحد /* حصر التعليق */ /* حصر تعليق أكثر من سطر حصر تعليق أكثر من سطر */ ?>
- نفذ لن ترى شيئاً ![]()
* المتغيرات :
- فقط ما نحتاجه لتعريف متغير في لغة php هو أن يسبق اسم المتغير العلامة $ ولا يشترط أن تضع للمتغير قيمة عند بداية التعريف ولكن لايصح إستخدامه قبل تعيين قيمه له ويتم التعرف على نوع البيانات المسندة للمتغير تلقائياً
- تسمية المتغيرات تتبع القواعد العامة بأن يبدأ اسم المتغير بحرف من حروف اللغة الإنجليزية أو من 127 إلى 255 من جدول ASCII ولا يحتوي غير الحروف الإنجليزية والأرقام والعلامة _ ومن 127 إلى 255 من جدول الـ ASCII على هذا يمكن إستخدام اللغة العربية في تسمية المتغيرات .
ملاحظة : من 127 إلى 255 من جدول الـ ASCII تكون مخصصة لرموز اللغة الحالية المستخدمه على الجهاز .
- تسمية المتغيرات حساسة لحالة الأحرف أي إستخدامك حرف كبير غير إستخدامك لحرف صغير
والتالي تعريف متغيرات مختلفه تحمل قيم مختلفة :
<?php $var1; // عدم اسناد قيمة إبتدائية للمتغير $var2 = 10; // اسناد عدد صحيح $var3 = 10.23; // اسناد عدد كسري $var4 = null; // اسناد القيمة الفارغة $var5 = false; // اسناد قيمة منطقية $محمود = "Mahmoud"; // اسناد سلسة نصية $مصطفى = 'Mostafa'; // اسناد سلسة نصية $var1 = $محمود; // اسناد متغير لمتغير $_ = $محمود.$var2; // دمج متغير بمتغير واسناد القيمة المدمجة لمتغير أخر $_20 = $var1.$var3; // دمج متغير بمتغير واسناد القيمة المدمجة لمتغير أخر // طباعة المتغيرات معاً echo $var1.$var2.$var3.$var4.$var5.$محمود.$مصطفى.$_.$_20; ?>
- هناك قيم أخرى يمكن إسنادها للمتغير سنتعرف عليها لاحقا كالمصفوفات والكائنات و العنوان
ملاحظة : القيمة المنطقية false والقيمة الفارغة null لاتظهر في الطباعة والقيمة المنطقية true يطبع عوضاً عنها 1
* العمليات الحسابية :
+ علامة الجمع
- علامة الطرح
* علامة الضرب
/ علامة القسمة
% علامة باقي القسمة
أمثلة على العمليات الحسابية :
<?php $var1 = 10; // اسناد عدد صحيح $var2 = 20.23; // اسناد عدد كسري $var3 = $var1*$var2; // عملية ضرب متغيرين $var4 = $var1/$var2; // عملية قسمة متغيرين $var5 = $var1%$var2; // عملية باقي القسمة echo '$var1+$var2 = '.($var1+$var2).'<br>'; // طباعة ناتج عملية الجمع وطباعة اسماء المتغيرات echo "$var1+$var2 = ".($var1+$var2).'<br>'; // طباعة ناتج عملية الجمع وطباعة قيم المتغيرات echo $var3.'<br>'.$var4."<br>".$var5; // طباعة باقي المتغيرات ?>
- والمثال السابق يوضح الفرق بين إستخدام علامة الإقتباس المزدوجة والمفردة حيث أن السلسة النصية بين علامتي إقتباس مزدوجتين إذا كان بها اسم متغير يتم طباعة قيمته ولكن في حالةعلامتي الإقتباس المفردتين يتم طباعة اسم المتغير وليس قيمته .
من المعروف أن العمليات الحسابية تتم على المتغيرات العددية فقط فهل لغة PHP تتبع هذا النمط كباقي اللغات وتصدر أخطاء عند مخالفة هذا الأمر ؟ تعالوا بنا لنرى المثال التالي :
<?php $var1 = 30; $var2 = '10ahmed'; // سلسة نصية تبدأ برقم $var3 = 'a120'; // سلسة نصية تبدأ بحرف $var4 = true; $var5 = false; $var6 = null; $var7 = '20a60'; // قيمة نصية بها أعداد وحروف $var8 = '20.13hhr60.12'; echo "$var1+$var2 = ".($var1+$var2).'<br>'; echo "$var1+$var3 = ".($var1+$var3).'<br>'; echo "$var1+$var4 = ".($var1+$var4).'<br>'; echo "$var1+$var5 = ".($var1+$var5).'<br>'; echo "$var1+$var6 = ".($var1+$var6).'<br>'; echo "$var1+$var7 = ".($var1+$var7).'<br>'; echo "$var1+$var8 = ".($var1+$var8).'<br>'; ?>
- نفذ المثال السابق ولاحظ النتيجة
- إن لم تستسغ الأمر يمكنك استخدام معاملات التحويل التالية :
intdouble float boolean bool string
بالنسبة لـ bool و boolean العمل واحد وأيضاً float و double
والمثال التالي يوضح العملية :
<?php $var1 = 10; $var2 = 20.12; $var3 = '1123456789123456789123456789ahmed'; $var4 = 'ahmed10'; $var5 = '12.123456789123456789ahmed'; echo "(double)$var1 = ".(double)$var1."<br>"; echo "(int)$var2 = ".(int)$var2."<br>"; echo "(string)$var1 = ".(string)$var1."<br>"; echo "(string)$var2 = ".(string)$var2."<br>"; echo "(int)$var3 = ".(int)$var3."<br>"; echo "(double)$var3 = ".(double)$var3."<br>"; echo "(int)$var4 = ".(int)$var4."<br>"; echo "(double)$var4 = ".(double)$var4."<br>"; echo "(int)$var5 = ".(int)$var5."<br>"; echo "(double)$var5 = ".(double)$var5."<br>"; echo "(int)null = ".(int)null ."<br>"; echo "(double)null = ".(double)null ."<br>"; echo "(int)false = ".(int)false ."<br>"; echo "(double)false = ".(double)false ."<br>"; echo "(int)true = ".(int)true ."<br>"; echo "(double)true = ".(double)true ."<br>"; ?>
والمثال التالي يوضح عملية التحويل للقيم المنطقية -وسيأتي ذكر هذه الجزئية بتفصيل بعد حالة الشرط if لاحقاً- :
<?php echo "(bool) = ".(bool)'' ."<br>"; echo "(bool)0 = ".(bool)0 ."<br>"; echo "(bool)'0' = ".(bool)'0' ."<br>"; echo "(bool)12 = ".(bool)12 ."<br>"; echo "(bool)-10 = ".(bool)-10 ."<br>"; echo "(bool)'-100' = ".(bool)'-100' ."<br>"; echo "(bool)12.12 = ".(bool)12.12 ."<br>"; echo "(bool)-13.12 = ".(bool)-13.12 ."<br>"; echo "(bool)12.12ahmed = ".(bool)'12.12ahmed' ."<br>"; echo "(bool)ahmed12.12 = ".(bool)'ahmed12.12' ."<br>"; echo "(int)((bool)0) = ".(int)((bool)0) ."<br>"; ?>
- وبإختصار السلسة النصية إذا كانت فارغة فهي تعني false وإن كان بها قيمة أياً كانت فهي تعني true حتى بدون عملية تحويل وسنرى هذا عند حديثنا عن الشروط , وأيضاً الصفر أو 0.0 يعني false وبخلاف ذلك سواء عدد صحيح أو كثري أو عدد سالب فهو يعني true .
* معاملات الزيادة والنقصان :
++ معامل الزيادة
-- معمل النقصان
- ففي حالة كونه قبل المتغير أي يُزاد أو يُنقص من قيمة المتغير قبل تنفيذ الكود البرمجي بمقدار واحد ولكن في حالة كونه بعد المتغير ينفذ الكود البرمجي الموجود به ومن ثَم زيادة أو نقصان المتغير بمقدار الواحد والكود التالي يوضح العملية :
<?php $var1 = 0; $var2 = 0; $var3 = 0; $var4 = 0; echo '++$var1 = '.(++$var1); echo '<br>'; echo '$var1 = '.$var1; echo '<br>'; echo '$var2++ = '.$var2++; echo '<br>'; echo '$var2 = '.$var2; echo '<br>'; echo '--$var3 = '.--$var3; echo '<br>'; echo '$var3 = '.$var3; echo '<br>'; echo '$var4-- = '.$var4--; echo '<br>'; echo '$var4 = '.$var4; ?>
* معاملات العمليات :
+= جمع قيمة على قيمة المتغير السابقة-= طرح قيمة من قيمة المتغير السابقة /= قسمة قيمة المتغير السابقة على قيمة *= ضرب قيمة في في قيمة المتغي السابقة %= إيجاد الباقي لقيمة المتغير السابقة على قيمة .= دمج قيمة إلى قيمة المتغير السابقة
والتالي يوضح العملية :
$var1 += $var2; تساوي $var1 = $var1 + $var2;$var1 -= $var2; تساوي $var1 = $var1 - $var2; $var1 *= $var2; تساوي $var1 = $var1 * $var2; $var1 /= $var2; تساوي $var1 = $var1 / $var2; $var1 %= $var2; تساوي $var1 = $var1 % $var2; $var1 .= $var2; تساوي $var1 = $var1 . $var2;
مثال على ما سبق :
<?php $var1 = 10; $var2 = 10; $var3 = 10; $var4 = 10; $var5 = 10; $var6 = 10; $var1 += 10; $var2 -= 10; $var3 *= 10; $var4 /= 10; $var5 %= 10; $var6 .= 10; echo $var1.'<br>'.$var2.'<br>'.$var3.'<br>'.$var4.'<br>'.$var5.'<br>'.$var6.'<br>'; ?>
- هناك طريقتين لكتابة أكواد php و HTML معاً إما استخدام جملة الطباعة أو إغلاق وسم كود php والبدأ في كتابة أكواد HTML ومن ثَم إعادة فتح وسم php لتكملة كتابة أكواد php كالتالي :
<?php $var1 = 'مصطفى'; $var2 = 'محمود'; ?> <!DOCTYPE HTML> <html dir="rtl"> <head> <link rel="stylesheet" type="text/css" href="style.css"/> <meta charset="utf-8"> <title> التمرين </title> </head> <body> <div style="color:#F00;"> <?php echo $var1; ?> </div> <div style="color:#00F; font-size:28px;"> <?php echo $var2; ?> </div> </body> </html>
والثانية :
<?php $var1 = 'مصطفى'; $var2 = 'محمود'; echo ' <!DOCTYPE HTML> <html dir="rtl"> <head> <link rel="stylesheet" type="text/css" href="style.css"/> <meta charset="utf-8"> <title> التمرين </title> </head> <body> <div style="color:#F00;"> '.$var1.' </div> <div style="color:#00F; font-size:28px;"> '.$var2.' </div> </body> </html>'; ?>
وكل طريقة تكون مناسبه في وضع أكثر من الثانية
ملاحظة : أكواد الـ HTML تعمل ضمن ملف بإمتداد php -ولكن تحتاج لسرفر- والعكس غير صحيح
وحتي لا نُغضب مبرمجي الـ c والـ c++ واللغات الأخرى منا فهناك دوال أخرى للطباعة والقراءه من سلسة نصية و عملها كعمل هذه الدوال في هذه اللغات :
وفي النهاية قبل أن أنهي موقع php يقدم توثيق أكثر من رائع للغة ولا غنا لمبرمجي php عنه والتالي رابط التوثيق على الموقع الرسمي :
وأيضاً يمكنكم تنزيل التوثيق من على الرابط التالي :
http://php.net/download-docs.php
التمرين :
إطبع السطر التالي بعدة طرق بحد أدنى ثلاث طرق -لا أقصد تغيير دالة الطباعة ولكن لتفادي تضارب الرموز- :
إطبع الكود التالي على المتصفح بدون تنفيذ كالتالي :
<div style="color:#F00;"> Mahmoud </div>
صحح الأخطاء في الأكواد التالية إن وجدت :
<?php $1var1 = 'ahmed'; $____ = 'mostafa'; var3 = 12; $var3 = 12.3; $echo = true; $ var4 = false $var-to = 12.6; $أحمد = 15; ?>
<?php $var1 = 12; //?> $var3 = 13; ?>
<?php $var1 = 10; $var2 = 20; $var1 -= 9; echo $var2/--$var1; ?>
دمتم في أمان الله
