لغة php : دورة كاملة للمبتدئين


لغة PHP وهي اختصارا لـــ Personal Home Page Tools , حيث أنها صممت خصيصًا لدعم وبناء صفحات وتطبيقات الويب. بالتالي هي لغة برمجة متعددة الأغراض وتخدم مشاريع أخرى في بعض الأحيان.

لقد كان أول ظهور لها عام 1995 على يد المهندس Rasmus Lerdorf.حيث لم تكن لغة برمجة , إذ كانت مجموعة من التطبيقات التي تم تطويرها بلغة بيرل. فهي خلاصة من تطور لاحق قام به Lerdorf محققًا أول اتصال في قواعد البيانات عبر لغة سي.

إلا أن لغة سي كانت واسعة الأفق ولم تمكن المبرمجين من استخدامها على أنها لغة أساسية في عالم الويب, لذا لجأ المطورون إلى تبني لغة جديدة وحصرية لصفحات الويب تحت تسمية PHP/FI.



متطلبات لغة PHP


في هذه الدورة ستتقن أساسيات برمجة الويب وستتمكن من صنع تطبيقات بسيطة عند التحاقك بها, ولكن لا بد من الإشارة إلى أن هناك متطلبات أساسية ومساعدة يجب عليك تنصيبها في حاسوبك مثل:

  • خادم Apache لأنظمة ويندوز / Linux.
  • محررات البرمجة مثل Sublime أو Notepad++ أو PHP Storm.
  • حاسوب يعمل بنظام ويندوز (مستحسن).

على سبيل المثال , فإن خادم Apache يحتوي على عنوان المضيف المحلي في شبكتك. وهو يمنحك الصلاحية في زيارة صفحتك التي قمت ببنائها, كما يتضمن أيضًا ملفات اللغة بشكل تلقائي عند تنصيبه.

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

بينما في حال أردت بعض المساعدة من المحرر في تصحيح واستدعاء المتغيرات فإننا ننصحك بالعمل على PHP Storm. بالتالي هو محرر قوي من jetBrains ويدعم أكثر من لغة في قيادة صفحات الويب. كما يوفر لك عمليات Auto complete عند البدء في الكتابة.

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


1.تجهيز المشروع


في دورتنا سنقوم باستخدام محرر PHP Storm والذي يعد واحدًا من أقوى المحررات في بناء المشاريع المتوسطة والكبيرة. وفي حال أقدمت على تنصيب ملفات خادم Apache فإننا ندعوك إلى عمل مجلد في سطح المكتب وتسميتها بأي من الأسماء القصيرة كالتالي:

لغة PHP
صورة يظهر فيها انشاء مجلد في ويندوز 8.1.

يتطلب منك نقل المجلد Tutorial إلى ملفات Root الخاصة بخادم Apache , وذلك كي يتم الوصول إلى الصفحات عبر المضيف.

وبالرغم من أن البعض يقم بإنشاء الصفحات في أماكن متعددة من القرص الصلب, إلا أن ذلك من شأنه أن يعيق العديد من المهام مثل فشل الاتصال بقواعد البيانات أو فشل الوصول إلى الموقع عبر العنوان 127.0.0.1 أو نطاق Local Host.

لغة PHP
صورة يظهر فيها نقل ملفات المشروع إلى امتداد خادم Appserv.

2.فتح المحرر



ضع باعتبارك أننا سنعمل على بيئة PHP Storm في هذه الدورة فإن أول خطوة سنقوم بها هي فتح المحرر بعد تنصيبه , لتظهر لنا صفحة المحرر الترحيبية بالشكل التالي:

صفحة PHP Storm
صورة يظهر فيها عملية الدخول إلى محرر PHP Storm.

قم باختيار Open ومن ثم ابحث في حاسوبك على الامتداد التالي C:\AppServ\www. وبعد ذلك قم باختيار ملف Tutorial الذي قمنا بنقله للتو.

لغة PHP
صورة يظهر فيها محاولة إنشاء ملف index.php.

عند الوصول إلى صفحة المحرر فإن كل ملف تقوم بإضافته سيعمل داخل مشروع Tutorial. على سبيل المثال , يتوجب علينا إنشاء ملف index.php وهو الملف المعتمد في جميع صفحات الويب. حيث تعمل جميع الخوادم بالوصول لصفحة index.php او index.html او index.aspx.

قم بالنقر على زر الفأرة الأيمن ومن ثم اختر New-> PHP File وقم بتسميته index.

عند ظهور صفحة index.php ولأول مرة يجب علينا مراعاة البادئة <?php وهي جعل المتصفح يدرك أن محتويات الصفحة تعمل بكود PHP , على سبيل المثال , شاهد الصورة التالية:

صفحة index.php
صورة يظهر فيها بادئة كود PHP.

 

الآن يجب أن نعلم أن هذه الصفحة هي قلب الموقع الإلكتروني , بالتالي يتم عبرها استدعاء كافة الوظائف التي يتم تضمينها في مساحة الشيفرة. بالإضافة إلى أنها تعمل على إحالتك إلى صفحاتٍ أخرى في الموقع.


3. طباعة جملة Hello World في لغة PHP


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

أضف إلى ذلك أن دورتنا ستبقى في سياق لغة PHP. بالرغم من أنك تستطيع قيادة الخادم بلغاتٍ أخرى, وذلك عبر استدعاء صفحات الويب باستخدام مكتبة .net مثلاً أو مكتبة node js في إطار عمل جافا سكريبت أو ربما بايثون وكل منها لها طريقة خاصة مع بعض الفوارق في الــ Syntax.

نقوم الآن بعرض جملة الطباعة Hello World عن طريق الكود التالي:

<?php

echo'<h3>Hello World</h3>';


?>

عند نسخ الشيفرة السابقة في صفحة index.php سيظهر الناتج كما في الصورة التالية:

لغة php
صورة يظهر فيها طباعة العبارة Hello World في المتصفح عبر لغة php.

لاحظ أننا حاولنا الوصول للمضيف المحلي عبر العنوان localhost ومن ثم اسم المشروع الذي قمنا بإضافته , بالتالي ستجد أن عبارة Hello World قد ظهرت بالفعل أثناء تضمين جملة الطباعة في هذه اللغة.

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

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

 


4. المتغيرات


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

ولو قمنا بحجز متغير من نوع integer أو string في الذاكرة. فإن ذلك يتم بنفس عملية التعريف وهي علامة $ ثم اسم المتغير.

<?php

$var = 500; //int
$var2 = 2.5; //float
$var3 = "Hello"; //string
$var4 = true; //boolean

الآن لو قمنا بنسخ الشيفرة السابقة بمحرر الكود سنجد أن اللغة تقبل جميع أنواع المتغيرات منها النصوص و العشرية والأعداد الصحيحة وأيضًا الجمل المنطقية. بالتالي فهي تقبل الحساب والمنطق حتى في بيئة عمل الويب.

 


5. الجمل الشرطية


تتعامل PHP مع الجمل الشرطية بطرق مختصرة وقوية في الإشارة للمنطق , على سبيل المثال فإن المتغيرات يسبقها إشارة $ ومن ثم اسم المتغير. وتستوفي الشروط كما في اللغات الأخرى عند تعريفها.

سنعمل على تعريف متغير ما بقيمة من نوع integer ومن ثم نطبق شرط فيما لو كانت قيمته تساوي 100 أم لا. لذا قم بتطبيق الشيفرة التالية لترى بعض النتائج الممكنة على الشاشة.

<?php

   $x = 100;

   if($x == 100)
       echo("true");
   else
       echo("false");


?>

كما نلاحظ هنا أن الشرط خضع لاختبار قصير ومختصر والنتيجة على شاشة المتصفح تحقق الشرط الأول. بالتالي قد يفيد استخدام الجمل الشرطية حصر الاحتمالات , خاصة عند الاتصال بقواعد البيانات والتي ربما سنتطرق لها في دورة أخرى.

 


6. المصفوفات


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

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

<?php

 $names = array("Test1" , "Test2" , "Test3");

 echo $names[1];
?>

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

مصفوفات أحادية

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

<?php

 $data= array("test1"=>"26" , "test2"=>"30" ,"test 3 "=>"16" );
    echo ($data["test1"]);
?>

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


7. الحلقات التكرارية


إن أهم ما يظهر مزايا لغة PHP هي الحلقات التكرارية, فهي تعمل بشكل موازٍ بجلب البيانات من قواعدها في الخادم. وهناك الحلقة for و while وهي بدورها الأقرب إلى خوارزميات الحلقات التكرارية.

في المثال التالي ستجد أننا سنخضع المصفوفة لعملية جلب البيانات على طريقة الحلقه for وسنعمل على النزول سطر تلو الآخر باستخدام br وهي واحدة من أشهر وسوم HTML. ولا ننسى أن سطور html يمكن تضمينها عند طباعة المتغيرات من نوع string في php.

<?php

$names = array("Test1" , "Test2" , "Test3");

$limit = count($names);
for($i = 0 ; $i <= $limit; $i++) {
    echo "$names[$i] <br/>";

}

?>

كان لا بد لنا من الوصول لحجم المصفوفة عبر الدالة count. بالتالي فهي تجلب لنا أطوال المصفوفات وتعد بدورها واحدة من الدوال المحجوزة في لغة php. وقد نلاحظ أن المتغيرات دائما يسبقها إشارة $ قبل التعريف فكن حذرًا بذلك الأمر.

 


8. الدالة


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

وعلى فرض أننا نريد عمل واستدعاء دالة محددة , فكل ما علينا هو التمعن في الشيفرة التالية:

<?php

 function test(){
    echo("Hello World");
 }

 test();

?>

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

<?php

 function test($x){
    echo $x;
 }

 test("Hello World");

?>

ببعض الأحيان قد نتطرق إلى استخدام الدالة من نوع recursion وهي تعمل على القيام بعمليات الحساب والمنطق أثناء إعادة القيمة, ونعتبر بذلك الشيفرة التالية مثال عليها:

<?php

 function test($x){
    $y = 10;
    return $x + $y;
 }

 $z = test(5);
 echo $z;

?>

نضع بالاعتبار أن القيمة المرجعة دائما يستقبلها متغير من نفس نوع القيمة , حيث أن المتصفح يدرك ذلك الأمر دون الإشارة الى المتغير كما ذكرنا في درس المتغيرات.


9. العمليات الحسابية



تقبل لغة PHP عددا من العمليات الحسابية القياسية في لغات البرمجة مثل الجمع والطرح والضرب والقسمة. كما تتيح لنا أيضا استخدام معادلات باقي القسمة للتأثير ببعض القيم التي قد نحتاجها لاحقًا.

<?php

   $x = 10;
   $y = 4;

    echo $x+$y;
    echo $x-$y;
    echo $x*$y;
    echo $x/$y;
    echo $x%$y;


?>

على سبيل المثال , قد نستخدم بعض العمليات المنطقية boolean في إدراج المتغيرات ومثال على ذلك دالة var_dump التي تعتبر بديلاً عن جملة الطباعة echo في العمليات المنطقية.

<?php

   $x = 10;
   $y = 4;

   var_dump($x > $y);   

//to print result in boolean we use var_dump instead of echo


?>

عند تتبع النتيجة على المتصفح ستظهر لنا كلمة bool ومن ثم العملية المنطقية سواء أكانت true او false , بالتالي تعتبر var_dump واحدة من الدوال التي تساعدك ببعض المهام.


10. الصفوف في لغة php


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

<?php
class Test{
  // Properties
  public $testName;
  public $testColor;

  // Methods
  function set_name($testName) {
    $this->testName= $testName;
  }
  function get_name() {
    return $this->testName;
  }
}
?>

 


11. تضمين الصفحات


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

لا يختلف الأمر كثيرًا مع فضاء الأسماء أو حتى صفحات c++ المتعددة وهذا ما دعمته لغة php في بناء مواقع الويب. بالتالي سنعمل على إضافة صفحة أخرى إلى جانب صفحة index.php ولتكن مثلا func.index وسنضع بها دالة بسيطة ليتم الاتصال بها من صفحة index.php.

<?php

//func.php

function data()
{
   echo 5 + 5;
}

لاحظ أننا قمنا بعمل دالة مبسطة في صفحة func.php وذلك من شأنه طلبها تحت أي صفحة من المشروع. وبما أن index.php هي صفحتنا في هذه الدورة وسنعمل على تضمين مصادرنا بها والاتصال بالدالة عن طريق الأمر include.

<?php

include "func.php";

$x = 10;
$y = 4;

var_dump($x > $y);

//to print result in booleans we use var_dump rather than echo

echo '<br>';

echo 'This is a function we called from func.php page!';

echo '<br>';

data();


?>

عند التحقق من النتائج الظاهرة في المتصفح , سنجد أن الشيفرة القديمة لم تتأثر بعملية الاستدعاء. وقد تظهر فوائد استخدامها واضحة عند تضمين قائمة الموقع بكافة الصفحات مثلا أو تضمين footer كذلك.

ينطبق الاستدعاء أيضًا على اللغات المكملة في صناعة مواقع الويب مثل جافا سكريبت أو css ولكن بــ syntax خاص بها.


12. التعامل مع النصوص



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

وأما في حال أردنا استبدال بعض النصوص بكلمات أخرى , فإن ذلك متاح عبر دالة str_replace كما في المثال التالي:

<?php

    $str = "Hello World";
    echo str_replace("Wor" , "***" , $str);

?>

تتيح لنا لغة PHP العديد من الدوال الأخرى , على سبيل المثال دالة تشفير النصوص md5 في حال كنت ترسل بيانات المستخدم إلى قواعد البيانات. وهي واحدة من الأدوات الأكثر استخدامًا عند إرسال كلمات المرور.

<?php

    $str = "Hello World";
    echo md5($str);

?>

تعد تشفير صيغة النصوص md5 واحدة من الدوال التي تعمل على حماية البيانات الشخصية من السرقة عند تسجيل الدخول أو تغيير كلمة المرور. أما في حال كنت تريد الاقتطاع من النصوص أو اختصارها فإن ذلك ممكنًا عند التعامل مع دالة substr كما في المثال التالي:

<?php

    $str = "Hello World";

    echo substr($str , 6);

?>

يفيد الرقم 6 بعدد وأماكن العناصر التي سيتم حجبها من الذاكرة عند طباعة المتغير, ولا ننسى أن النصوص في لغات البرمجة ليست سوى مصفوفة كبيرة من الأحرف يتم تشكيلها وفقًا لدوال char متعددة الأغراض.

قد يحدث وأن تريد معرفة عدد الحروف المتواجدة في النصوص المطبوعة أو المخزنة في متغيرات PHP , وأصبح الأمر متاحًا عند التعامل مع دالة strlen تمامًا مثل الشيفرة التالية:

<?php

    $str = "Hello World";
   echo strlen($str);

?>

على سبيل المثال , فهي تقوم بحساب عدد الأحرف المتواجدة في المتغيرات ومن ثم ارجاعها على شكل قيمة من نوع integer.


13. الجلسات


تقوم الجلسات بدور فتح المتصفح وحفظ البيانات المجهزة عند زيارة الموقع أو الصفحة , فهي بدورها عملية تشير إلى وجود الزائر على الموقع في الوقت الحالي. وقد تستطيع إخفاء بعض البيانات عن الجلسات غير المخولة للخادم.

على سبيل المثال , عند تسجيل الدخول لأي موقع فإن جلسة العميل تبدأ ويتم إظهار بعض البيانات الخاصة بقواعد البيانات والتي لا تتوفر لغير أعضاء الموقع. وهي عامل أساسي في حماية قواعد البيانات أو حجب المشاركة عن المتطفلين.

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

<?php
session_start();

if(!empty( $_SESSION['counter'])){
    $_SESSION['counter']++;
}else{
    $_SESSION['counter'] = 5;       //refresh the page to see the difference
}



echo $_SESSION['counter'];
?>

الدالة session_start تعمل على فتح الجلسة داخل المتصفح , وتم اسنادها لقيمة من الأعداد الصحيحة. وذلك لملاحظة تأثيرها في صفحات الويب. بالتالي وعند الدخول إلى الصفحة نستطيع استبدال القيمة 5 ليحل بدلا منها اسم المستخدم وتنفيذ بعض الشروط على بعض المستخدمين.

تفيد الجلسات بإنشاء بعض الحسابات وتقييدها ببعض الصلاحيات من وجهة نظر المبرمجين. وقد تتشابه كثيرًا مع cookies كعكة الويب وسيتم شرحها في مستويات متقدمة من برمجة الويب.

 

 

الخلاصة

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

المراجع
  1. PHP OOP ^ w3schools.
  2.  What PHP is ^ wikipedia.
  3.  الموقع الرسمي ^ php.

 

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *