السبت، 2 مارس 2013

المقدمه


مقدمة

PHP تعطيك الحرية لإضافة خصائص متقدمة في موقعك.
الهدف من هذا الدرس هو توفير مقدمة سهلة متكاملة ودقيقة للغة PHP، الدرس يبدأ من الصفر لكنه يتطلب منك أن يكون لديك معرفة جيدة بلغة HTML، إن كنت لا تعرف HTML فعليك أن تبدأ بدرس HTML.
PHP يمكن استخدامها في الكثير من الحالات، لإنشاء المنتديات، الاستفتاءات، المتاجر، بوابات للرسائل النصية القصيرة، قوائم بريدية وغير ذلك، الحد الوحيد لما يمكنك فعله في PHP هو خيالك، PHP ليست صعبة لكن تذكر أنها أكثر تطوراً وتطلباً من HTML لذلك الصبر عند تعلمها ضروري..
هذا الدرس لا يمكنه تعليمك كل شيء، لذلك المطلوب منك أن تشارك وتجرب بنفسك، إن احتجت لمساعدة فننصحك بزيارة المنتديات للحصول على دعم، في المنتديات ستلتقي بخبراء يمكنهم مساعدتك بالتلميحات والمقترحات والنصائح.

ما المطلوب؟

نفترض أنك تملك محرراً نصياً وتعرف كيف تستخدمه.
بعد ذلك أنت بحاجة لحاسوب أو مزود يمكنه تشغيل PHP، على النقيض من HTML وCSS لغة البرمجة PHP لا تتأثر بأي متصفح يستخدمه زوار موقعك بل بنوع المزود الذي يستضيف موقعك، لأن PHP هي تقنية من جهة المزود.
في الدروس القليلة القادمة ستتعلم كيف تعمل PHP وكيف تعد حاسوبك لتشغيلها، بعد ذلك ستتعلم وظائفها وطرقها.
عندما تنتهي من هذا الدرس، ستتمكن من البرمجة باستخدام PHP وبالتالي ستحصل على إمكانيات غير محدودة لإضافة التفاعل في صفحات موقعك.
استمتع!

الدرس 1: ما هي لغة PHP

عندما يبدأ أي شخص في تعلم PHP السؤال الذي يتكرر طرحه هو: ما هي PHP؟ وكيف تعمل؟
هذا بالضبط ما سنجيب عنه في هذا الدرس، من المفيد أن تفهم الأساسيات المتعلقة بلغة PHP قبل أن تبدأ تطوير صفحات موقعك بها، فهم الأساسيات سيعجل من سرعة تعلمك بشكل كبير.
لنبدأ!

ما هي PHP؟

PHP هي اختصار Personal Home Pages، لكنها الآن تعني PHP: Hypertext Preprocessor.
طورت في البداية من قبل المطور الدينماركي راسموس ليدروف، بعد ذلك تحولت لمشروع برنامج حر، PHP ليست من المعايير القياسية للويب لكنها تقنية مفتوحة المصدر، PHP ليست لغة برمجة حقيقية لكنها تسمح لك بدمجها في صفحات موقعك.
لوصف ما هي صفحة PHP يمكنك أن تقول بأنها ملف بامتداد .php يحوي خليطاً من HTML ولغة البرمجة PHP وهي تعمل على مزود ويب.
ملاحظة المترجم: المقصود هنا أن PHP ليست لغة برمجة كبقية اللغات الأخرى، بل هي لغة متخصصة لتطوير المواقع فقط وهي لغة مرنة يمكن دمجها في صفحات المواقع.

كيف تعمل PHP؟

أفضل طريقة لشرح كيف تعمل PHP هي بمقارنتها مع HTML، تصور أنك كتبت عنوان صفحة HTML (مثال http://www.mysite.com/page.htm) في حقل العناوين في المتصفح، بهذه الطريقة أنت تطلب صفحة HTML، يمكن تصوير هذه العملية بهذا الشكل:
الرسم يوضح زبوناً يطلب صفحة HTML من مزود
كما ترى المزود ببساطة يرسل ملف HTML إلى الزبون أي إلى حاسوب الزائر، لكن إذا كتبت http://www.mysite.com/page.php - أي طلبت صفحة PHP - سيحتاج المزود لمزيد من بذل الجهد:
الرسم يوضح زبوناً يطلب صفحة PHP من المزود
المزود عليه أولاً أن يقرأ ملف PHP بعناية ليرى إن كان هناك أي مهمات عليه تنفيذها، فقط عندما ينتهي المزود مما يجب عليه فعله سيرسل النتيجة إلى الزبون، من الضروري أن تفهم بأن الزبون يرى فقط نتيجة عمل المزود وليس الأوامر الموجودة في ملف PHP.
هذا يعني أنك إن نقرت على "view source" أو "استعراض المصدر" في صفحة PHP فلن ترى أوامر PHP بل فقط وسوم HTML، لذلك لا يمكنك أن ترى كيف كتبت صفحة PHP عندما تحاول استعراض مصدرها، عليك أن تتعلم اللغة بطريقة مختلفة، بقراءة هذا الدرس مثلاً.
ما تتعلمه في هذا الدرس هو ما تكتبه من أوامر للمزود!
في البداية عليك أن تحصل على مزود، لكن لا تقلق، لا يجب عليك شراء حاسوب جديد، أنت بحاجة فقط إلى تثبيت برنامج على حاسوبك ليجعله يعمل كمزود، الخيار الآخر هو أن تملك موقعاً مستضافاً على مزود يدعم PHP، عندها عليك أن تكون على اتصال بالإنترنت عندما تبرمج.
الدرس التالي سيكون حول كيفية إعداد حاسوبك ليعمل كمزود.

الدرس 2: المزودات

PHP هي تقنية من جهة المزود، لذلك تحتاج لمزود يشغل PHP، لكن هذا لا يعني أنك بحاجة لشراء أي شيء، هناك خيارات مختلفة للحصول على مزود.
أنت تحتاج لخيار واحد، هذا الدرس مقسم إلى ثلاثة أقسام، الأول مقدمة للخيارات الثلاثة واختر منها ما يناسبك، عندما يكون لديك مزود يعمل سنكمل الدرس في الجزء الثالث لنكتب أول صفحة PHP.

الخيار 1: موقع مستضاف على مزود

يمكنك أن تختار مزوداً يستضيف موقعك ويدعم PHP.

الخيار 2: تثبيت PHP على حاسوبك

تثبيت PHP على حاسوبك ليس نزهة في الحديقة، هذا الخيار مناسب لخبراء مستخدمي الحاسوب، ويمكن بالطبع إنجاز تثبيت PHP على حاسوبك، هنا ستجد روابط لتنزيل PHP ودليلاً لتثبيتها على أنظمة مختلفة:

خيار 3: XAMPP

XAMPP هو برنامج يجعل من السهل والممكن لنا أن نشغل PHP على حواسيبنا دون أن نثبتها بأنفسنا.
  • تعلم كيف تثبت XAMPP
  • الدرس الثالث: إنشاء أول صفحة PHP

    من الدرس الأول والثاني تعلمت القليل حول ماهية لغة PHP، ثبت مزوداً على حاسوبك أو يمكنك الوصول لمزود يدعم هذه اللغة، الآن أنت جاهز لتبدأ في كتابة أول صفحة PHP، الدرس سيكون سهلاً وبسيطاً، لكن بعد أن تنجز الدرس ستفهم ما هي لغة PHP وماذا يمكنك إنجازه باستخدامها.
    ببساطة ملف PHP هو ملف نصي بامتداد .php ويتألف من:
    • نص
    • وسوم HTML
    • برمجة بلغة PHP
    أنت تعرف مسبقاً ما هو النص وما هي وسوم HTML، لذلك لنلقي نظرة على برمجة PHP.

    برامج PHP

    فريق توثيق PHP أصدر توثيقوثائق مفصلة للغة PHP، خلال الدرس سنضع كثيراً من الروابط لهذه الوثائق، الهدف هو أن تعتاد على البحث وإيجاد الأجوبة لأسئلتك، PHP لغة واسعة ولا يمكنك أن تتعلم كل إمكانياتها في هذا الدرس، لكنها ليست لغة صعبة، على العكس، PHP تبدو في بعض الأحيان كاللغة الإنجليزية.
    لنبدأ بإنشاء صفحة PHP الأولى.

    مثال: Hello World!

    ابدأ في إنشاء صفحة HTML عادية لكن أعطي للملف اسم page.php واحفظه في المجلد الرئيسي للموقع:
    وسوم HTML يجب أن تكون بهذا الشكل:
     <html>
     <head>
     <title>My first PHP page</title>
    
     </head>
     <body>
    
     </body>
     </html>
     
    كما تتذكر من الدرس الأول، كل شيء في PHP متعلق بكتابة أوامر للمزود، لذلك دعنا نكتب بعض الأوامر.
    في البداية نحن بحاجة لأن نخبر المزود أين ستبدأ PHP ومتى ستتوقف. في PHP تستخدم وسوم <?php و?> لتحديد بداية ونهاية أوامر PHP التي يجب على المزود تنفيذها، في معظم المزودات استخدام <? كوسم بداية فقط سيكون كافياً لكن <?php هي الطريقة الأفضل لكي عندما تستخدم PHP لأول مرة في الملف.
    الآن أضف التالي لوسوم HTML:
     <html>
     <head>
     <title>My first PHP page</title>
     </head>
     <body>
    
     <?php   
    
     echo "<h1>Hello World!</h1>";
    
     ?>
    
     </body>
     </html>
     
     
    عندما تستعرض ملف PHP في المتصفح يجب أن يكون الملف بهذا الشكل:
    رسم توضيحي: النتائج في المتصفح
    الأمر يصبح مثيراً أكثر عندما تنظر لمصدر الصفحة في المتصفح باختيار "view source":
    صورة توضيحية: استعراض المصدر
    أوامر PHP ذهبت! كما تتكر في الدرس الأول المزود وحده الذي يستطيع أن يرى أوامر PHP، - الزبون (أي المتصفح) يرى النتائج فقط!
    لنلقي نظرة على ما حدث، نحن طلبنا من المزود أن يكتب <h1> Hello World!</h1>، بلغة تقنية أكثر سنقول بأننا استخدمنا الوظيفة توثيقecho لنكتب سلسلة محارف محددة للزبون (المتصفح) والفاصلة المنقوطة تنهي الأمر، لكن لا تخف، في هذا الدرس سنحاول أن نبقي اللغة التقنية في حدها الأدنى.
    في مثالنا الأول من الواضح أنه ليس مثيراً للحماس، لكن انتظر فقط! من الآن وصاعداً ستزداد الأمور حماساً، لنلقي نظرة على مثال آخر.

    مثال: الآن!

    لنجعل المزود يكتب شيئاً آخر، يمكننا مثلاً أن نطلب منه أن يكتب تاريخ اليوم والوقت:
     <html>
     <head>
     <title>My first PHP page</title>
    
     </head>
     <body>
    
     <?php   
    
     echo date("r");
    
     ?>
    
     </body>
     </html>
     
     
    هذا سيظهر بهذا الشكل في المتصفح:
    صورة توضيحية: النتائج في المتصفح
    ووسوم HTML في المقابل ستكون:
    صورة توضيحية: استعراض المصدر
    الآن الأمور تبدو مسلية أكثر، أليس كذلك؟
    جعلنا المزود يكتب التاريخ والوقت عندما تعرض صفحة PHP، لاحظ أنك إذا جربت تحديث الصفحة سترى وقتاً جديداً يكتب، المزود يكتب التاريخ والوقت الحالي في كل مرة ترسل الصفحة إلى الزبون.
    من المهم أيضاً أن تلاحظ بأن مصدر HTML يحتوي فقط التاريخ وليس أوامر PHP، لذلك المثال لا يتأثر بأي متصفح استخدم، في الحقيقة كل الخصائص التي تعتمد على تقنياتجهة المزود ستعمل في كل المتصفحات!
    ومرة أخرى لاحظ الفاصلة المنقوطة بعد سطر الأمر، هذه الفاصلة مهمة جداً ويجب أن تضاف وإلا لن يعمل البرنامج.
    في المثال استخدمنا وظيفة توثيقdate، وهي وظيفة تعطينا الوقت والتاريخ الحاليين في المزود.
    لنجرب إضافة المزيد للمثال من خلال كتابة سلسلة محارف ووظيفة برمجية - يفصل بينهما "." (نقطة) - هكذا:
     <html>
     <head>
     <title>My first PHP document</title>
     </head>
     <body>
    
     <?php 
     
     echo "<p>Current date and time: " . date("r") . "</p>";
    
     ?>
    
     </body>
     </html>
     
     
    ستظهر بهذا الشكل في المتصفح:
    صورة توضيحية: النتائج في المتصفح
    ووسوم HTML في المقابل ستكون:
    صورة توضيحية: استعراض المصدر
    في الدرس التالي سنلقي نظرة مفصلة أكثر على وظيفة توثيقdate والأشكال المختلفة للتاريخ والوقت.

الدرس1



الدرس الرابع: التعامل مع الوقت والتاريخ

في هذا الدرس سنلقي نظرة على الخيارات المختلفة للتعامل مع الوقت والتاريخ في PHP، في الدرس السابق استعرضنا أمثلة بسيطة لنشرح ماهية اللغة، في هذا الدرس سنلقي نظرة على وظيفة توثيقdate .

وظائف الوقت والتاريخ

PHP تقدم مجموعة واسعة من الوظائف المتعلقة بالوقت والتاريخ، في هذا الدرس سنلقي نظرة على أهم هذه الوظائف: توثيقdate.
مع وجود الكثير من العوامل المختلفة يمكن لوظيفةتوثيقdate أن تعطي التاريخ الحالي أو الوقت بأشكال مختلفة، بعض أكثر العوامل المفيدة هي:
date("y")
يعطينا السنة الحالية، وبتاريخ اليوم فهو يعطينا: 13
date("m")
يعطينا الشهر الحالي، وبتاريخ اليوم فهو يعطينا: 03
date("F")
يعطينا اسم الشهر الحالي، وبتاريخ اليوم فهو يعطينا: March
date("d")
يعطينا اليوم الحالي في الشهر، وبتاريخ اليوم فهو يعطينا: 02
date("l")
يعطينا اسم اليوم، وبتاريخ اليوم فهو يعطينا: Saturday
date("w")
يعطينا رقم اليوم في الأسبوع، وبتاريخ اليوم فهو يعطينا: 6
date("H")
يعطينا الساعة الحالية، وبالتوقيت الحالي فهو يعطينا: 14
date("i")
يعطينا الدقيقة الحالية، وبالتوقيت الحالي فهو يعطينا: 42
date("s")
يعطينا الثانية الحالية، وبالتوقيت الحالي فهو يعطينا: 15
هذا المثال يوضح استخدام وظيفة توثيقdate:
 <html>
 <head>
 <title>Time and date</title>

 </head>
 <body>

 <?php 
 
 echo "<p>Today it's " . date("l") . "</p>";

 ?>
 
 </body>
 </html>
 
 

الوقت هو 1362231735

وظيفة توثيقtime() تعطينا الوقت الحالي كعدد من الثواني منذ الواحد من يناير 1970 وبالتحديد من الساعة 12 مساء بتوقيت غرينتش.
 <html>
 <head>
 <title>time and date</title>
 </head>
 <body>

 <?php   

 echo "<p>It's been exactly " . time() . " seconds since January 1, 1970, 12:00 PM, GMT </ p> ";

 ?>

 </body>
 </html>
 
 
الوقت المعبر عنه بعدد الثواني منذ 1 يناير 1970 الساعة 12 مساء بتوقيت غرينتش يسمى "timestamp" أو الطابع الزمني ويسمى أيضاً الطابع الزمني ليونكس وهو مفيد عند التعامل مع التواريخ والأوقات في المستقبل أو الماضي.
تلقائياً وظيفةتوثيقdate تستخدم الطابع الزمني الحالي أي القيمة الحالية لوظيفة توثيقtime()، لكن من خلال عوامل إضافية يمكنك أن تحدد طابعاً زمنياً مختلفاً وهكذا يمكنك التعامل مع الماضي والمستقبل، في المثال أدناه حددنا الثانية صفر من تاريخ 1 يناير 1970 الساعة 12 مساء بتوقيت غرنيتش، هكذا يمكننا معرفة أي يوم كان هذا:
 <html>
 <head>
 <title>time and date</title>
 </head>
 <body>

 <?php 
 
 echo "<p>January 1, 1970 was a " . date("l",0) . "</p>";

 ?>

 </body>
 </html>
 
 
يزداد تعقيد عد الثواني منذ 1 يناير 1970 إلى وقت محدد في المستقبل أو الماضي، إلا إن كنت عبقري رياضيات! لكن يمكنك لوظيفة مفيدة أن تساعدك: توثيقmktime، التي يمكنها أن تحسب عدد الثواني.
طريقة كتابة قيم توثيقmktime هي (ساعة، دقيقة، ثانية، شهر، يوم، عام)، المثال أدناه يحول الوقت لأول خطوة على القمر 21 يوليو 1969 في 02:56:
 <html>
 <head>
 <title>time and date</title>
 </head>
 <body>

 <?php  
 
 echo mktime (2,56,0,7,21,1969);

 ?>

 </body>
 </html>
 
 
لاحظ أنه يعطينا رقماً سلبياً لأن التاريخ الذي طلبناه كان قبل 1 يناير 1970.
يمكننا أن نجمع بين هذه الوظيفة ووظيفة توثيقdate لنجد أي يوم وقع هذا الحدث التاريخي.
 <html>
 <head>
 <title>time and date</title>
 </head>
 <body>

 <?php
 
 echo date("l", mktime(2,56,0,7,21,1969));
 
 ?>
 
 </body>
 </html>
 
 

كيف يمكنك استخدامها؟

كل ما سبق يبدو نظرياً حتى الآن، كيف يمكنك أن تستخدم وظيفة مثل توثيقtime()، الأهم من ذلك متى ستتعلم شيئاً يمكنك أن فعلاً أن تضيفه في صفحاتك؟
الإجابة هي أن ما تتعلمه هنا هي لبناء البناء الأساسية، الحد الوحيد لما يمكنك فعله بها هو إبداعك وخيالك! سأتجرأ لأقول بأنك تعلمت أكثر مما تظن، مثلاً هل تظن أنه بإمكانك إنشاء موقع يعرض خلفية للصفحة تتغير بحسب أيام الأسبوع ويعمل على كل المتصفحات؟
بالتأكيد يمكنك، ألقي نظرة على المثال:
 <html>
 <head>
 <title>time and date</title>
 </head>

 <body background="background_<?php echo date("w"); ?>.png">

 </body>
 </html>
 
 
المثال أعلاه بصور متغيرة، ببساطة يتطلب منك أن تصنع 7 صور لخلفية الموقع وتسمي كل واحدة منها background_1.png وbackground_2.png وbackground_3.png ... إلخ.
إن زار مستخدم موقعك يوم الثلاثاء الموقع سيعرض صورة background_2.png كخلفية، في اليوم التالي سيعرض background_3.png، بسيط وسهل!
في الدرس التالي ستتعلم لبنات بناء جديدة يمكن استخدامها لصنع حلقات وتكراراً في برنامجك.
PHP ممتعة، أليس كذلك؟

الدرس الخامس: الحلقات

في PHP من الممكن أن تدير تنفيذ البرامج بهياكل تحكم مختلفة، في هذا الدرس سنلقي نظرة على الحلقات (loop)، الحلقات يمكن استخدامها لتكرار أجزاء من البرنامج بعدد محدد من المرات أو إلى أن يتحقق شرط محدد.

حلقات while

طريقة كتابة حلقة توثيقwhile هي:
 while (condition) {
  Statement
 } 
 
 
بناء الحلقة يمكن ترجمته إلى العربية: إفعل كذا بينما الشرط المحدد محقق.
لنلقي نظرة على مثال بسيط:
 <html>
 <head>
 <title>Loops</title>

 </head>
 <body>

 <?php

 $x = 1;
  
 while ($x <= 50) {
    echo "<p>This text is repeated 50 times</p>";
    $x = $x + 1;
 }
 ?>

 </body>

 </html>
 
 
في المثال استخدمنا المتغير المسمى "$x"، كما ترى المتغيرات في PHP دائماً تبدأ برمز "$"، من السهل نسيان هذه النقطة في البداية لكن من الضروري تذكر ذلك وإلا لن يعمل البرنامج.
بعد هذه النقطة المثال يشرح نفسه تقريباً، في البداية المتغير $x أعطيناه القيمة 1، ثم الحلقة تسأل المزود أن أن يكرر النص ما دام أن $x أقل أو يساوي 50، في كل تكرار المتغير$x ستزداد قيمته بإضافة 1.

حلقات for

هناك طريقة أخرى لاستخدام الحلقات وهذا من خلال الأمر توثيقfor بهذا الشكل:
 
 for (Initialization; Condition; Step) {
   Statement
 }
 
 
البيان (statement) يكرر ما دام أن التهيئة (Initialization) والخطوة (step) يحققان الشرط (Condition)، إن لم تفهم هذا فانظر إلى المثال:
 <html>
 <head>

 <title>Loops</title>
 </head>
 <body>

 <?php

 for ($x=0; $x<=50; $x=$x+5) {
    echo "<p>variable $x is now = " . $x . "</p>";
 }
 ?>

 </body>
 </html>
 
 
في المثال أعلاه المتغير $x يزداد بقيمة 5 في كل حلقة، التكرار سيستمر ما دام أن $x أقل من أو تساوي 50، لاحظ أيضاً أن القيمة $x تستخدم كجزء من الجملة.
هذا مثال آخر:
 <html>
 <head>

 <title>Loops</title>
 </head>
 <body>

 <?php

 for ($x=1; $x<=6; $x=$x+1) {
    echo "<h" . $x . ">Heading level " . $x . "</h" . $x . ">";
 }
 ?>

 </body>
 </html>
 
 
هل فهمت المثال؟ في البداية حددنا قيمة المتغير $x بالعدد واحد، ثم في كل تكرار نكتب عنواناً على مستوى $x أي (h1 ثم h2 ثم h3 ... إلخ) إلى أن تصبح قيم $x تساوي ستة.

حلقات داخل حلقات

كمبدأ، ليس هناك حد لكيفية استخدام الحلقات، فمثلاً يمكنك بسهولة أن تضع حلقات داخل حلقات وهكذا تنشأ العديد من التكرار.
لكن احذر! PHP تصبح بطيئة ومعقدة ويكبر حجم البرنامج ، ألقي نظرة على المثال التالي حيث باستخدام 3 حلقات يمكننا كتابة 16 مليون لوناً!
لكي لا نجعل الصفحة بطيئة قللنا العدد بأن جعلنا الخطوة محدودة بالرقم 30، وبالتالي قللنا عدد الألوان إلى 512.
 <html>

 <head>
 <title>Loops </title>
 </head>
 <body>

 <?php
 
 for ($intRed=0; $intRed<=255; $intRed=$intRed+30) {

    for ($intGreen=0; $intGreen<=255; $intGreen=$intGreen+30) {

       for ($intBlue=0; $intBlue<=255; $intBlue=$intBlue+30) {
  
    $StrColor = "rgb(" . $intRed . "," . $intGreen . "," . $intBlue . ")";
    
    echo "<span style='color:" . $StrColor . "'>" . $StrColor . "</span>";
  
       }
    }
 }
 ?>

 </body>
 </html>
 
 
في هذا المثال كل لون أولي (أحمر أخضر وأزرق) يمكنه أن يحمل قيمة ما بين 0 و255، أي مركب من الألوان الثلاثة يكون لوناً بشكل rgb(255,255,255)، رقم اللون يستخدم في وسم <span>.
الحلقات تصبح أكثر فائدة عندما تتعلم المزيد، عندما تفهم أساس الحلقات يمكنك أن تنتقل إلى الدرس التالي لنلقي نظرة على الشروط.

الدرس السادس: الشروط

الشروط تستخدم لتنفيذ أجزاء من البرنامج فقط عندما تستوفى متطلبات محددة مسبقاً، فمثلاً الشرط يمكن أن يكون تاريخ بعد الأول من يناير 2012 أو متغير أكبر من 7.

If...

أول نوع من الشروط سنلقي نظرة عليه هو توثيقif، وهو يكتب بهذا الشكل:
 if (condition) {
    statement
 }
 
 
مرة أخرى، طريقة كتابة الأمر قريبة جداً من اللغة الطبيعية، إذا (If) تحقق شرط فنفذ كذا وكذا، لنلقي نظرة على مثال بسيط:
 <html>

 <head>
 <title>Loops </title>
 </head>
 <body>

 <?php

 $x = 2;

 if ($x > 1) {
    echo "<p>variable $x is greater than 1 </p>";
 }
  
 ?>

 </body>
 </html>
 
 

if ... else ...

النوع التالي من الشروط الذي سنلقي نظرة عليه هو توثيقelse، وهو ما يمكن أن يكتب بهذا الشكل:
 
 if (condition) {
    statement
 }
 else {
    statement
 }

 
مرة أخرى، أسلوب كتابة الأمر قريب من اللغة الطبيعية: إذا (if) تحقق شرط نفذ كذا وكذا، وإلا else نفذ شيئاً آخر.
في الدرس الرابع تعلمت كيف تجد رقم الشهر، في المثال التالي سنستخدم رقم الشهر في حلقة توثيقif وتوثيقelse والشرط وضعت لمعرفة الموسم:
 <html>
 <head>
 <title>Conditions</title>
 </head>
 <body>

 <?php

 if (date ("m") == 3) {
    echo "<p>Now it's spring!</p> ";
 }
 else {
    echo "<p>I do not know what season it is!</p> "; 
 }

 ?>

 </body>
 </html>
 
 
كما ترى، الشرط ليس شرطاً ذكياً وفقط يعمل إن كان الشهر مارس!
على أي حال هناك كثير من الطرق لتحسين الشرط وزيادة دقته، أدناه قائمة العوامل (operators) التي يمكن استخدامها في الشروط:
== يساوي
< أقل من
> أكبر من
<= أقل من أو يساوي
>= أكبر من أو يساوي
!= لا يساوي
بالإضافة إلى ذلك هناك عوامل منطق:
&& و
|| أو
! لا
العوامل يمكن استخدامها لوضع شروط أكثر دقة، الآن يمكن توسيع المثال أعلاه لإدراج كل شهور الربيع:
 <html>
 <head>
 <title>Conditions</title>

 </head>
 <body>

 <?php
 
 if (date("m") >= 3 && date("m") <= 5) {
    echo "<p> Now it's spring!</p> ";
 }
 else {
    echo "<p> Now it's either winter, summer or autumn!</p> ";
 }
  
 ?>

 </body>
 </html>

 
 
لنلقي نظرة مقربة على الشرط المحسن::
 date("m") >= 3 && date("m") <= 5 
 
يمكن ترجمة الشرط إلى:
 إن كان الشهر أكبر من أو يساوي 3، والشهر أقل من أو يساوي 5
 
 
شرط ذكي، أليس كذلك؟ العوامل تلعب دوراً مهماً في كثير من أجزاء PHP.
لكن لا زال البرنامج يعمل لشهور مارس، أبريل ومايو، بقية الشهور لم تذكر في الشرط، لذلك دعنا نطور الشرط أكثر.

if ... elseif ... else...

باستخدام توثيقelseif يمكننا توسيع الشرط ليعمل على كافة الشهور:
 <html>
 <head>
 <title>Conditions</title>

 </head>
 <body>

 <?php
 
 if (date("m") >= 3 && date("m") <= 5) {
    echo "<p>Now it's spring!</p>";
 }

 elseif (date("m") >= 6 && date("m") <= 8) {
    echo "<p>Now it's summer!</p>";
 }

 elseif (date("m") >= 9 && date("m") <= 11) {
    echo "<p>Now it's autumn!</p>";
 }

 else {
    echo "<p>Now is winter!</p>";
 }
  
 ?>

 </body>
 </html>

 
 
لكتابة الشروط عليك أن تفكر بشكل منطقي وتكون منهجياً، المثال أعلاه بسيط لكن الشروط يمكنها أن تصبح معقدة جداً.

switch ... case

هناك طريقة أخرى لكتاب الشروط باستخدام توثيقswitch:
 switch (expression) {
 
 case 1: 
    statement
    break; 
 case 2: 
    statement
    break; 
 default:
    statement
    break;
 }
 
 
هذه الطريقة تعتمد على الشرط أو expression ثم تضع قائمة بمختلف الأجوبة والقيم من خلال البيان أو statements، أسهل طريقة لشرح هذا الأمر هو من خلال مثال.
كما تتذكر في الدرس الرابع وظيفة توثيقdate("w") تعطينا رقم اليوم في الأسبوع، هذا يمكن استخدامه في المثال بكتابة اسم اليوم بدلاً من رقمه:
 <html>
 <head>
 <title>Conditions</title>
 </head>
 <body>

 <?php
 
 switch(date("w")) {
  
 case 1:
    echo "Now it's Monday";
    break;
 case 2:
    echo "Now it's Tuesday";
    break;
 case 3:
    echo "Now it's Wednesday";
    break;
 case 4:
    echo "Now it's Thursday";
    break;
 case 5:
    echo "Now it's Friday";
    break;
 case 6:
    echo "Now it's Saturday";
    break;
 default:
    echo "Now it's Sunday";
    break;
  
 }
  
 ?>

 </body>
 </html>
 
 
غالباً توثيقswitch تستخدم كبديل لأمر توثيقif وتوثيقelse، ما يجب عليك استخدامه في أي ظرف يعتمد على أي طريقة تجدها أسهل وأكثر منطقية، محاولة أن تجعل برنامجك منطقياً وواضحاً سيكون تحدياً كبيراً.
في الدرس التالي سنلقي نظرة على كيفية إضافة تعليقات لبرنامجك وكيف تعمل، التعليقات الجيدة يمكنها أن تكون ضرورية لشخص آخر عليه تغيير شيء ما في برنامجك في مرحلة لاحقة.

الدرس السابع: ضع تعليقات في برامجك

كما قد لاحظت، برامج PHP يمكنها أن تبدو مثيرة للحيرة، في هذا الدرس سنتحدث عن أهمية التعليقات وكيف تضعها في برامجك.

لماذا من المهم أن تضع تعليقات في برامجك؟

عندما تبرمج فأنت تكتب لمزود أو حاسوب وتحتاج لكتابة لغة منهجية قد لا تعبر عن أفكارك عندما تكتب البرنامج.
لذلك قد يكون من الصعب على الآخرين وعليك أن تفهم هيكل البرنامج وبالتالي من الصعب تصحيح الأخطاء في البرنامج.
التعليقات تساعد على كتابة نص قصير يشرح جزء من البرنامج، المزود سيتجاهل هذا التعليق ولن يؤثر التعليق على وظائف البرنامج.
في عالم الأعمال، يكون من متطلبات مواصفات البرامج أن تحوي تعليقات وإلا ستكون مخاطرة كبيرة من الشركة أن تستلم برنامجاً تجد صعوبة في إيجاد وتصحيح أخطاءه.

كيف تضع التعليقات؟

من السهل أن تضع تعليقات في برنامجك، ببساطة ابدأ التعليق بعلامة: "//".
ألقي نظرة على هذا المثال من الدرس الخامس ، أضفنا فيه تعليقات:
 <html>
 <head>
 <title>Loops</title>
 </head>
 <body>

 <?php

 // Here we write color codes using three loops

 // Red can be between 0 and 255 
 for ($intRed=0; $intRed<=255; $intRed=$intRed+30) {

    // Green can be between 0 and 255
    for ($intGreen=0; $ intGreen<=255; $intGreen=$intGreen+30) {

       // Blue can be between 0 and 255
       for ($ intBlue=0; $intBlue<=255; $intBlue=$intBlue+30) {

       // The color code is made on the form rgb(red,green,blue)
    strColor = "rgb(" . intRed . "," . intGreen . "," . intBlue . ")"

       // Now we write the color code to the client
    echo "<span style='color:" . $strColor . "'> " . $ strColor . " </span>";

       // Closes the loops
       }
    }
 }

 ?>
 
 
من أجل هذا المثال أضفنا المزيد من التعليقات لنوضح كيف أنك تستطيع تصحيح البرنامج بسهولة مع وجود التعليقات.
لذلك، تذكر أن تضع تعليقات في برنامجك!

الدرس الثامن: المصفوفات

في هذا الدرس سنلقي نظرة على المصفوفات، كيف تستخدم وماذا يمكنها أن تفعل.
فهم المصفوفات يمكن أن يكون صعباً في البداية، لكن لنجرب على أي حال ... حاولنا أن نجعلها سهلة بقدر الإمكان.

ما هي المصفوفة؟

المصفوفة (array) هي مجموعة من من العناصر المفهرسة حيث كل عنصر له رقم تعريف خاص به.
يبدو هذا مثيراً للحيرة، لكنها في الواقع ليست بهذا القدر من التعقيد.
تصور قائمة من الكلمات فصلنا بينها باستخدام فاصلة، تسمى القائمة مفصولة بفواصل، ويمكنها أن تكون بهذا الشكل:
 apples, pears, bananas, oranges, lemons
 
 
جرب أن تتخيل تقسيم القائمة عند كل فاصلة، ثم أعطي كل قسم رقماً مميزاً كما في الصورة:
apples (0), pears (1), bananas (2), oranges (3), lemons (4)
ما تراه هو مصفوفة، يمكننا مثلاً أن نسمي المصفوفة فواكه أو "fruits"، الفكرة هي أنك تستطيع الوصول إلى المصفوفة برقم وتحصل على قيمة، كما في القائمة أدناه:
fruits(0) = apples
fruits(1) = pears
fruits(2) = bananas
fruits(3) = oranges
fruits(4) = lemons
هذه هي فكرة المصفوفات، الآن لنستخدمها عملياً.

كيف تستخدم المصفوفة؟

سنكمل مع مثال الفواكه، خطوة بعد خطوة سنجعلها تعمل كمصفوفة حقيقية، أولاً علينا أن نضع متغيرات مساوية لقائمة الفواكه:
 <?php

 $fruitlist = "apples, pears, bananas, oranges, lemons";
 
 ?>
 
 
بعد ذلك نستخدم وظيفة توثيقexplode لفصل القائمة عند كل فاصلة:
 <?php
  
 $fruitlist = "apples, pears, bananas, oranges, lemons";
  
 $arrFruits = explode(",", $fruitlist);

 ?>
 
 
مرحى! المتغير "$arrFruits" أصبح مصفوفة الآن!
لاحظ أننا استخدمنا الوظيفة توثيقexplode بخاصيتين:
  1. الأولى هي القائمة التي يجب تقسيمها.
  2. والثانية هي المحدد أو الحرف الذي استخدم لتقسيم القائمة (في حالتنا استخدمنا الفاصلة): ",".
هنا نستخدم الفاصلة كمحدد أو مقسم لكن يمكنك استخدام أي حرف أو كلمة كمقسم للمصفوفة.
لنجرب إضافة تعليق على البرنامج ووضعه في صفحة PHP:
 <html>
 <head>
 <title>Array</title>
 </head>
 <body>

 <?php
 
 // Comma separated list
 $fruitlist = "apples, pears, bananas, oranges, lemons";
  
 // Create an array by splitting the list (with comma as delimiter)
 $arrFruits = explode(",", $fruitlist);
  
    // Write the values from our array
    echo "<p>The list of fruits:</p>";
  
    echo "<ul>";
    echo "<li>" . $arrFruits[0] . "</li>";
    echo "<li>" . $arrFruits[1] . "</li>";
    echo "<li>" . $arrFruits[2] . "</li>";
    echo "<li>" . $arrFruits[3] . "</li>";
    echo "<li>" . $arrFruits[4] . "</li>";
    echo "</ul>";

 ?>

 </body>
 </html>
 
 
هذا مثال بسيط جداً ويمكن أن تجد صعوبة في فهم فائدة المصفوفات في هذه المهمة بالتحديد، لكن انتظر، المصفوفات يمكن أن تكون تستخدم في أشياء كثيرة مفيدة.

حلقة داخل مصفوفة

في الدرس الخامس تعلمت الحلقات، الآن يمكننا استخدام حلقة للتعامل مع المصفوفة.
عندما تعلم كم عدد العناصر التي تحويها مصفوفة فلن تكون هناك مشكلة في تحديد حلقة، ببساطة تبدأ من الصفر وتجعل الحلقة تستمر في عملها بعدد العناصر المتوفرة، في المثال مع الفواكه الحلقة ستكون بهذا الشكل:
 <html>
 <head>
 <title>Array</title>

 </head>
 <body>

 <?php
 
 // Comma separated list
 $fruitlist = "apples, pears, bananas, oranges, lemons";
  
 // Create an array by splitting the list (with a comma as delimiter)
 $arrFruits = explode (",", $fruitlist);
  
    echo "<p>The list of fruits:</p>";
    echo "<ul>";
  
    // Loop through the array $arrFruits
    for ($x=0; $x<=4; $x++) {
       echo "<li>" . $arrFruits[$x] . "</li>";
    }
  
    echo "</ul>";

 ?>
  
 </body>
 </html>
 
 
كما ترى، المتغير $x الذي ترتفع قيمته من 0 إلى 4 في الحلقة استخدم لجلب المصفوفة

كيف تجد حجم المصفوفة؟

ماذا لو أضفنا فاكهة أخرى إلى القائمة؟ ستحوي القائمة عنصراً إضافياً وسيحمل رقم التعريف 5، هل ترى مشكلة هنا؟ نحن بحاجة لتغيير الحلقة حتى تستطيع أن تكرر نفسها من 0 إلى 5 وإلا لن نستطيع التعامل مع كل العناصر في المصفوفة.
ألن يكون من المفيد أن تكون هناك طريقة لإيجاد عدد العناصر في أي مصفوفة؟
هذا بالضبط ما يمكن أن تفعله وظيفة توثيقforeach، الآن يمكننا أن نصمم حلقة تعمل بغض النظر عن عدد العناصر في المصفوفة:
 <?php
    foreach ($arrFruits as $x) {
       echo arrFruit[$x];
    }
 ?>
 
 
هذه الحلقة ستعمل بغض النظر عن عدد العناصر التي تحويها المصفوفة.

مثال آخر

المثال أدناه يوضح كيفية استخدام المصفوفة لكتابة اسم كل شهر:
 <html>
 <head>
 <title>Array<title>

 </head>
 <body>

 // Creates array with each month.
 // Creates array with the months. Note the comma before January - because there is no month with the number 0
 $arrMonths = array(,"January","February","March","April","May","June","July","August","September","October","November","December);
  
 // Call the array with the number of the month - write to the client
 echo $arrMonths[date("m")];
 ?>

 </body>
 </html>
 
 
لاحظ أننا استخدمنا وظيفة توثيقarray بدلاً من وظيفة توثيقexplode لإنشاء مصفوفة.
حسناً، اكتفينا بالمصفوفات، في الدرس التالي ستتعلم كيف تطور وظائف خاصة بك.