عبد اللطيف ايمش

introduction-to-php.png.4ec2ee42786c7c5b

ما هي PHP؟

PHP هي اختصارٌ للعبارة PHP: Hypertext Preprocessor؛ وهي معروفةٌ كلغة سكربتات (scripting language) مُفسَّرة (interpreter) من جهة الخادوم تُستعمَل لتطوير الويب؛ وهذا يعني أنَّ PHP تُستعمَل على الخادوم لتوليد صفحات الويب الديناميكية. ما يُقصَد بصفحات الويب الديناميكية هي تلك الصفحات التي تُنشَأ أو تُعدَّل من الخادوم قبل إرسالها إلى العميل. إن لم تكن تعرف ما هو الخادوم وما هو العميل، فافتح لسانًا جديدًا في متصفح الويب الخاص بك واكتب فيه academy.hsoub.com، وبهذا يُصبِح متصفحك "عميلًا" (client) والمكان الذي تأتي منه صفحة الويب المطلوبة هو "الخادوم" (خادوم الويب أو web server).

يمكن تضمين سكربتات PHP في مستندات HTML، وهي لغةٌ سهلة التعلم، وتشبه بنيتها كثيرًا البنية القاعدية للغات C و Java و Perl.

التثبيت

يمكنك بسهولة تثبيت WAMP (على نظام ويندوز) أو LAMP (على لينُكس) أو حزمة البرمجيات XAMPP (التي تعمل على ويندوز، ولينُكس، وماك) وذلك تبعًا لنظام تشغيل حاسوبك، راجع مقال كيفية تنصيب ووردبريس محليا باستخدام MAMP لمزيدٍ من المعلومات عن MAMP.

تجربة الأمثلة

يمكنك تجربة سكربتات PHP عبر تثبيت خادم أباتشي مع دعم PHP يدويًا أو عبر تثبيت حزم جاهزة كالتي ذكرناها آنفًا، لكن توفِّر PHP لك طريقتين لتنفيذ الملفات: عبر سطر الأوامر، وعبر الخادوم المدمج مع PHP؛ وسنشرح كلا الطريقتين في هذا الدرس.

استخدام الخادوم المدمج

وفَّرت PHP من الإصدار 5.4.0 خادومًا مدمجًا معها يُسهِّل تجربة السكربتات دون عبء تثبيت خادوم ويب كامل مثل أباتشي وضبطه؛ لكن الغرض منه هو تجربة البرامج فقط وليس مصممًا للاستعمال كخادوم إنتاجي على الشبكة.

ستُخدَّم الملفات الموجودة في مجلد العمل الحالي عبر ذاك الخادوم المدمج، الذي يُشغَّل كالآتي:

cd ~/public_html
php -S localhost:8000

PHP 5.5.9-1ubuntu4.5 Development Server started at Fri Jan 8 13:58:31 2016
Listening on http://localhost:8000
Document root is /home/user/public_html
Press Ctrl-C to quit.

الأمر php -S localhost:8000 سيشغِّل الخادوم في مجلد العمل الحالي (‎~/public_html) وسيكون متاحًا للوصول من الجهاز المحلي فقط، وسيعمل على المنفذ 8000؛ إن أردت أن يعمل على البطاقات الشبكية، فضع 0.0.0.0 بدلًا من localhost؛ اضغط على Ctrl+C لإيقاف الخادوم.

أنشِئ الملف test.php وضع فيه المحتويات الآتية لتجربه:

<?php
  // هذه تجربة لتنفيذ سكربتات PHP من الخادوم المدمج
  echo "test";
?>

افتح الآن المتصفح وأدخِل http://localhost:8000/test.php في شريط العنوان، وستحصل على نتيجة مشابهة لما يلي:

img1.png.8e713cf92389b18805a0e741f11caf3

يجدر بالذكر أنَّه بإمكانك تخديم صفحات HTML الثابتة عبر هذا الخادوم، وليس بالضرورة أن تكون الصفحة بلاحقة PHP.

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

استعمال سطر الأوامر

من البدهي أن تستطيع تنفيذ شيفرات PHP (كغيرها من لغات السكربتات) من سطر الأوامر؛ كل ما عليك فعله هو استدعاء السكربت من الأمر PHP كالآتي:

php ~/public_html/test.php

أو يمكن تضمين ما يسمى shebang في الأنظمة الشبيهة بيونكس (كنظامَي لينُكس وماك) في بداية السكربت ليبدو كما يلي:

#!/usr/bin/php

<?php
  // هذه تجربة لتنفيذ سكربتات PHP من سطر الأوامر
  echo "test";
?>

وعندها تستطيع تنفيذ السكربت مباشرةً دون استدعاء مفسر PHP كما يلي:

~/public_html/test.php

ملاحظة: لا تنسَ إعطاء الملف امتيازات التنفيذ قبل محاولة تنفيذه:

chmod +x ~/public_html/test.php

يمكن أيضًا تنفيذ الشيفرات تفاعليًا، عبر تنفيذ الأمر php -a ثم كتابة الأوامر تفاعليًا كما يظهر في الصورة الآتية (لاحظ أنه بإمكانك استعمال زر tab لإكمال أسماء الدوال والأصناف وغيرها):

img2.png.15550be977b0a65cb796b929d86c8a6

البنية القاعدية للغة

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

<?php

/* author: Abd Allatif Eymsh
website: academy.hsoub.com
version: 1.0
date: 22 12 2015
*/

// هذا تعليقٌ ذو سطرٍ وحيد
// يتم تجاهل التعليقات من المفسِّر

$variable = 'variable';

// نستعمل عبارة echo لطباعة الجمل
echo "string";
echo $variable;

?>

انسخ ما سبق والصقه في ملفٍ باسم index.php في مجلد htdocs (في نظام ويندوز) أو www (في لينُكس) أو أي مكان تريده إن كنت تستعمل الخادوم المدمج، ثم افتح ذاك الملف في متصفح الويب (بعد أن تُشغِّل الخادوم) وستحصل على النتيجة "stringvariable"، لنُقسِّم الآن الملف ولنشرح بنيته.

  • تُكتَب شيفرات PHP في ملفٍ بامتداد ‎.php
  • تُكتَب شيفرات PHP بين وسمَيّ البداية ‎<?php والنهاية ‎?>
  • وكما في لغتَيّ C أو Perl، تتطلب PHP أن تنتهي التعليمات البرمجية بفاصلة منقوطة ";"
  • يُشير الرمز $ إلى متغير (variable)، سنتحدث عن المتغيرات في هذا الدرس لاحقًا
  • تكافئ علامات الاقتباس المفردة والمزدوجة بعضها (لكنها ليس لها نفس المعنى تمامًا، سنشرح الاختلاف البسيط لاحقًا)
  • يُستعمَل الأمر echo لطباعة البيانات

التعليقات

التعليقات جزءٌ من البرنامج لا ينفِّذها مُفسِّر اللغة؛ وهي ملاحظاتٌ لكي يتذكر القارئ أو يفهم أمرًا برمجيًا ما لاحقًا. وهنالك نوعان من التعليقات:

  • التعليقات ذات السطر الوحيد: وهذه التعليقات قصيرةٌ تمتد لسطرٍ وحيدٍ فقط، وتبدأ عادةً بالرمز "//"، ولا بأس أن يكون قبلها تعليماتٌ برمجية، لكن التعليق سينتهي مع نهاية السطر؛ ويستحق أن نذكر أننا نستطيع أن نبدأ التعليقات ذات السطر الوحيد برمز المربع (#) بدلًا من شرطتين مائلتين.
  • التعليقات متعددة الأسطر: وهي تعليقاتٌ طويلة، قد تمتد لأكثر من سطر؛ وتوضع بين علامة البداية ‎/*‎ وعلامة النهاية ‎*/‎، ومن استعمالات هذا النوع من التعليقات أيضًا هي تعطيل جزء من الشيفرة ﻷغراض التجربة.

يمكنك أن ترى نوعَيّ التعليقات السابقين في المثال أعلاه.

المتغيرات

تسمح لك المتغيرات بتخزين ومعالجة البيانات في السكربتات، ويمكنك اعتبارها شبيهةً بالمتغيرات التي تستعملها في الرياضيات؛ إذ أنَّ المتغير -ببساطة- هو حاويةٌ تحوي قيمةً معيّنة؛ أُطلِقَت تسمية "المتغيرات" عليها لأنها القيمة المُسنَدة إليها قد تتغير أثناء تنفيذ السكربت، وقابلية التغير تلك تجعل من المتغيرات أداةً مفيدةً جدًا.

وكما ذكرنا سابقًا، يبدأ اسم المتغير بالإشارة $. هذه بعض الأمثلة عن أسماءٍ صحيحةٍ للمتغيرات:

  • ‎$simple
  • ‎$_start_with_underscore
  • ‎$_includes_numbers_23
  • ‎$_includes_UPPERCASE_2
  • ‎$_23_it_is_valid

ملاحظة: لا يمكنك بدء اسم المتغير برقمٍ كالاسم الآتي ‎$2_invalid_variable_name، ولا يمكن أيضًا أن تستعمل الشرطة "-" في اسمه.

أنواع البيانات

أنواع البيانات (data types) هي أنواع المتغيرات في PHP؛ وأنواعُ البياناتِ البسيطة في PHP هي:

  • الأعداد الصحيحة (integers)
  • الأعداد ذات الفاصلة (floats)
  • السلاسل النصيّة (strings)
  • القيم المنطقية البوليانية (صح [true] أو خطأ [false])؛
  • وهنالك أنواع بياناتٍ أخرى مثل الكائنات (objects) والمصفوفات (arrays) سنتحدث عنها لاحقًا في هذه السلسلة.

ملاحظة: إن كانت لديك معلوماتٌ سابقة عن إحدى لغات البرمجة التي تُحدِّد نوع البيانات المُخزَّنة في المتغيرات (أي strongly typed)، فاعلم أنَّ PHP هي لغةٌ لا تتطلب منك تحديد النوع (أي أنها loosely typed)؛ فلا تحتاج إلى أن تخبر اللغة ما نوع البيانات التي ستُخزَّن في المتغير.

الثوابت

الثابت هو مُعرِّف (أي اسم) يحمل قيمةً معيّنة، وكما يوحي اسمه، لن تتغير قيمته أثناء تنفيذ السكربت بعد أن تُعرَّف لأول مرة، واسمه حساسٌ لحالة الأحرف، وتُستعمَل الأحرف الكبيرة فيه عادةً؛ وله نفس قواعد تسمية المتغيرات (لا يجوز أن يبدأ برقم، أو يحتوي على شرطة…)، لكن لا يوضع الرمز $ قبله.

<?php

/* author: Abd Allatif Eymsh
website: academy.hsoub.com
version: 1.0
date: 22 12 2015
*/

// هذا تعليقٌ ذو سطرٍ وحيد

$variable = 'variablename';

echo "string";

echo $variable;

define( "MY_CONSTANT", "19" );

define('PI', 3.14);

echo PI;

echo MY_CONSTANT;

?>

تكون PI و MY_CONSTANT ثوابت في المثال السابق.

ملاحظة: يمكن استعمال الكلمة المحجوزة const لتعريف الثوابت بدلًا من الدالة define()‎ في إصدار PHP 5.3 وما بعده كما يلي:

<?php

// تعمل في إصدار PHP 5.3
const CONSTANT = 'Hello World';
echo CONSTANT;

?>

لكن لا يمكن تعريف الثوابت باستخدام const داخل الدوال أو الحلقات، لأنها تُعرَّف في وقت التصريف (compile-time).

المعاملات

يأخذ المعامل قيمةً أو أكثر (أو "تعبيرًا" [expressions] كما نقول في الاصطلاحات البرمجية) ويُنتِج قيمةً أخرى. يمكن أن تُجمَّع المعاملات بناءً على عدد القيم التي تأخذها، فمثلًا المعاملات الأحادية (unary operators) تأخذ قيمةً واحدةً فقط (مثل معامل الزيادة الذي شرحناها أدناه)، والمعاملات الثنائية تأخذ قيمتين مثل المعاملات الحسابية البسيطة (الجمع والطرح والضرب…) وتُصنَّف أغلبية المعاملات في PHP ضمن هذا القسم؛ وهنالك معامل ثلاثي وحيد يأخذ ثلاث قيم سنشرحه في درسٍ لاحق.

هنالك عددٌ كبيرٌ من المعاملات في لغة PHP، أهمها:

  1. المعاملات الحسابية
  2. الإسناد
  3. معاملات الأعداد الثنائية (Bitwise)
  4. معاملات المقارنة
  5. الزيادة أو الإنقاص
  6. معامل السلاسل النصية

المعاملات الحسابية هي تلك المعاملات التي تستعملها في الحسابات الرياضية، مثل الجمع (+)، والطرح (-)، والضرب (*)، والقسمة (/)، وباقي القسمة (%)؛ مثال:

$a = 4 + 5; // + هو معامل حسابي

لاحظ الفرق بين المعاملين / و %، إذ أنَّ / هو معامل القسمة بينما % هو باقي القسمة؛ أي ‎8 /5‎ = 1.6 ‎‎، بينما ‎8 % 5 = 3 (إذ أنَّ ‎8 = 5 *1 +3، فإن باقي القسمة هو 3).

أما معامل الإسناد، فيسند القيم إلى المتغيرات، وهو إشارة = كما في المثال الآتي: ‎$a = 4;‎.

تجري المعاملات الثنائية العمليات الحسابية على البتات الموجودة في الأعداد الصحيحة، وهي & ‏(and)، و | ‏(or)، و >> (الإزاحة نحو اليسار)، و << (الإزاحة نحو اليمين)، و ^ ‏(XOR)، و ~ (NOR)؛ مثال على ذلك هو ‎14 & 3 = 2‎، لأنَّ ‎00001110 & 00000011 = 00000010‎.

أما معاملات المقارنة، فهي -كما يدل اسمها- تقارن بين قيمتين؛ يُظهِر الجدول الآتي معاملات المقارنة الشائعة:

المثال

اسم المعامل

النتيجة

$a == $b

المساواة

TRUE إن كان المتغير ‎$a مساويًا بالقيمة إلى المتغير ‎$b

$a === $b

مطابقة

TRUE إن كان المتغير ‎$a مساويًا المتغير ‎$b بالقيمة والنوع

$a != $b

$a <> $b

عدم مساواة

TRUE إن لم يكن المتغير ‎$a مساويًا للمتغير ‎$b

$a !== $b

عدم مطابقة

TRUE إن لم يكن المتغير ‎$a مساويًا للمتغير ‎$b بالقيمة أو بالنوع

$a < $b

أصغر من

TRUE إن كان المتغير ‎$a أصغر تمامًا من المتغير ‎$b

$a > $b

أكبر من

TRUE إن كان المتغير ‎$a أكبر تمامًا من المتغير ‎$b

$a <= $b

أصغر من أو يساوي

TRUE إن كان المتغير ‎$a أصغر أو يساوي المتغير ‎$b

$a >= $b

أكبر من أو يساوي

TRUE إن كان المتغير ‎$a أكبر أو يساوي المتغير ‎$b

تستعمل معاملات الزيادة أو الإنقاص لزيادة أو إنقاص قيمة المتغير بقيمة 1.

المثال

شرحه

++$x;‎

إضافة القيمة 1 إلى المتغير ‎$x ثم إعادة القيمة النهائية

$x++;‎

إعادة قيمة المتغير ‎$x ثم إضافة 1

‎–-$x;‎

إنقاص القيمة 1 من المتغير ‎$x ثم إعادة القيمة النهائية

$x–-;‎

إعادة قيمة المتغير ‎$x ثم إنقاص 1

<?php

echo "Postincrement";
$a = 5;
echo "Should be 5: " . $a++;
echo "Should be 6: " . $a;

echo "Preincrement";
$a = 5;
echo "Should be 6: " . ++$a;
echo "Should be 6: " . $a;

echo "Postdecrement";
$a = 5;
echo "Should be 5: " . $a--;
echo "Should be 4: " . $a;

echo "Predecrement";
$a = 5;
echo "Should be 4: " . --$a;
echo "Should be 4: " . $a;

?>

معامل السلاسل النصية (.) يستعمل لجمع سلسلتين نصيتين أو متغيرين مع بعضهما بعضًا؛ انظر إلى الشيفرة الآتي:

<?php

$a = 4;
$q = 5;
$c = $a.$q; // المتغيران $a و $b أصبحا مدمجين مع بعضهما

echo $c;

$n = 'myname';
echo "string ".$n.' $n inserted'; // دمج ثلاث سلاسل نصيّة

?>

حاول أن تتدَّرب على تعريف وطباعة قيمة المتغيرات الخاصة بك، وأن تستعمل مختلف المعاملات السابقة عليها.

المصادر



4 اشخاص أعجبوا بهذا


تفاعل الأعضاء


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

شارك هذا التعليق


رابط هذا التعليق
شارك على الشبكات الإجتماعية
بتاريخ 4 ساعات قال cherzaidi:

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

على الرحب والسعة :-)

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

1 شخص أعجب بهذا

شارك هذا التعليق


رابط هذا التعليق
شارك على الشبكات الإجتماعية


يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن