التعرف على بنية لغة PHP
الجزء الأول
الموضوعات
الرئيسية التي سوف نتعلمها في هذا الدرس:
·
تضمين PHP في HTML.
·
إضافة محتوى ديناميكي تفاعلي في HTML .
·
كيفية الوصول إلى المتغيرات الموجودة
ضمن النموذج form .
·
فهم المعرفات identifiers .
·
كيفية إنشاء المتغيرات.
·
دراسة أنواع المتغيرات.
·
كيفية إعطاء قيم للمتغيرات.
·
كيفية تعريف الثوابت واستخدامها.
·
معرفة ما هو مجال أو نطاق المتغيرات.
·
فهم التعابير البرمجية (العوامل ،
الأولويات) .
·
استخدام
التوابع (functions).
·
التعامل مع القرارات باستخدام : if , else ,
switch .
·
التعامل مع الحلقات باستخدام : while
, for , do .
·
الخروج من البرنامج النصي أو من بنية
التحكم.
البيئة البرمجية:
للعمل من خلال
الأمثلة الواردة في هذا الدرس نحتاج إلى ما يلي:
-
Web server لذا سوف نستخدم Apache server
-
PHP
-
MYSQL
Database
يمكن تنزيل package كاملة تتضمن ما سبق من خلال الموقع التالي :
https://www.appserv.org
نموذج تطبيقي:
لنفترض وجود
شركة قطع غيار السيارات تسمى Bob
تريد إنشاء تطبيق عبر الانترنيت لبيع منتجاتها.
إنشاء نموذج الطلب:
قام مبرمج HTML من شركة Bob بإعداد نموذج طلب للأجزاء التي يبيعها ، يود بوب أن يكون قادرًا على معرفة ما
طلبه عملاؤه ، وأن يحدد إجمالي ما طلبوه ، و أسعار طلباتهم ، وتحديد مقدار ضريبة
المبيعات المستحقة على الطلبات.
يمكن رؤية
النموذج في الشكل التالي:
وليكن الكود
موجود ضمن ملف orderform.html على الشكل
التالي:
<form
action="processorder.php" method="post">
<table
style="border: 0px;">
<tr
style="background: #cccccc;">
<td
style="width: 150px; text-align: center;">Item</td>
<td
style="width: 15px; text-align: center;">Quantity</td>
</tr>
<tr>
<td>Tires</td>
<td>
<input
type="text" name="tireqty" size="3" maxlength="3"
/></td>
</tr>
<tr>
<td>Oil</td>
<td>
<input
type="text" name="oilqty" size="3" maxlength="3"
/></td>
</tr>
<tr>
<td>Spark
Plugs</td>
<td>
<input
type="text" name="sparkqty" size="3" maxlength="3"
/></td>
</tr>
<tr>
<td
colspan="2" style="text-align: center;">
<input
type="submit" value="SubmitOrder" />
</td>
</tr>
</table>
</form>
لاحظ أنه تم
تعيين الإجراء actionعلى اسم البرنامج
النصي processorder.php الذي سيعالج طلب
الزبون (سنتكتب هذا البرنامج النصي فيما بعد).
وعند الضغط على زر SubmitOrder
سيتم إرسال بيانات المستخدم إلى عنوان الـ
URL المحدد بـ action والذي هنا هو نفسه الملف processorder.php ، حيث يتم إرسال المعلومات
حسب الطريقة المذكورة بـ method والتي هي هنا post والتي تعني إرسال البيانات برسالة منفصلة عن
عنوان الـ URL ، وهناك طريقة أخرى تسمى get وتعني الحاق البيانات بنهاية عنوان الـURL .
أما أسماء الحقول tireqty ,
oilqty , sparkqty
الموجودة ضمن الـ form سيتم إعادة استخدامها في الملف processorder.php ومن الضروري أن تكون هذه الأسماء ذات معنى بحيث يمكن
تذكرها بسهولة عند بدء كتابة البرنامج النصي PHP .
يجب أن تفكر في
اعتماد معيار لترميز أسماء الحقول بحيث تكون جميع أسماء الحقول في جميع أنحاء
موقعك لها نفس التنسيق.
معالجة النموذج:
لمعالجة
النموذج، نحتاج إلى إنشاء البرنامج النصي المذكور سابقاً في الصفة action والذي هو processorder.php ولذلك نفتح محرر النص الخاص ونقوم بإنشاء هذا
الملف ثم اكتب فيه الكود التالي:
<! DOCTYPE html>
<html>
<head>
<title>Bob's
Auto Parts - Order Results</title>
</head>
<body>
<h1>Bob's
Auto Parts</h1>
<h2>Order
Results</h2>
</body>
</html>
والآن سنقوم
بشرح النقاط التي ذكرناها في مقدمة هذه المحاضرة.
أولاً : تضمين كود PHP في HTML:
لاحظ كيف أن كل
شيء كتبته حتى الآن هو مجرد HTML لقد حان الوقت لإضافة كود PHP
ضمن الـ HTML
لذا تحت
العنوان <h2>
في نفس الملف السابق ، أضف الأسطر التالية:
<?php
echo
'<p>Order processed.</p>';
?>
احفظ الملف بالاسم processorder.php ، ومن ثم في المتصفح اطلب الصفحة orderform.html وقم بملء نموذج
الطلب ثم انقر على الزر SubmitOrder عندها ستظهر لك
النتيجة التالية:
إذا حاولنا عرض
شيفرة المصدر من المتصفح نشاهد الكود التالي:
<!
DOCTYPE html>
<html>
<head>
<title>Bob's
Auto Parts - Order Results</title>
</head>
<body>
<h1>Bob's
Auto Parts</h1>
<h2>Order
Results</h2>
<p>Order
processed.</p>
</body>
</html>
لن يكون كود
الـ PHP واضح في الشيفرة وذلك لأن مترجم الـ PHP قد تم تشغيله عبر البرنامج النصي من خلال
التعبير <?php واستبداله بنتيجة التنفيذ.
هذا يعني أنه من خلال مترجم
الـ PHP يمكنك إنتاجك كود HTML واضح و قابل للعرض من قبل
أي متصفح بمعنى آخر لا يحتاج متصفح الموجود لدى المستخدم إلى فهم كود الـ PHP .
هذا المثال يوضح مفهوم البرمجة النصية من جهة المخدم server-side scripting ، حيث تم تفسير كود الـ PHP وتنفيذه على الـ web server وهذه ما يميزه عن لغات البرمجة من جهة المستخدم client-side والتي يتم تفسيرها وتنفيذها داخل المتصفح الموجود لدى المستخدم.
في المثال
السابق استخدمنا أربعة أنواع من النصوص هي:
·
HTML
·
PHP tags
·
PHP statements
·
Whitespace
·
comments
سنقوم بشرح كل
منها.
1. PHP Tags :
بدأ كود PHP في المثال السابق بـ <?php وانتهى بـ ?> وهذا مشابه إلى جميع HTML
Tags لأنها تبدأ بالرمز (<) وتنتهي بالرمز (>).
تسمى هذه الرموز (<?php ، ?> ) بالاسم PHP tags فهي تخبر المخدم web server متى يبدأ كود الـ PHP ومتى ينتهي ، فكل الكود الموجود ضمن
هذين الرمزين يتم التعامل معه كـ PHP ، وكل ما هو خارج هذين الرمزين يتم التعامل معه
كـ HTML عادي.
هناك بالفعل طريقتين لكتابة PHP tags وكلاهما مقبول:
·
XML style:
يكتب على الشكل
التالي: <?php echo '<p>Order processed.</p>'; ?>
·
Short style:
يكنب على الشكل
التالي: <? echo '<p>Order processed.</p>'; ?>
2. PHP Statements :
يمكنك إخبار مترجم PHP بما يجب القيام به من خلال كتابة عبارات PHP (PHP Statements) ضمن PHP tags .
في المثال السابق استخدمنا العبارة التالية: echo
'<p>Order processed.</p>';
هذه العبارة بسيطة جداً فهي تطبع العبارة الموجودة ضمن
الرمزين ' ' على المتصفح .
لاحظ أن هناك فاصلة منقوطة في نهاية العبارة السابقة ، هذه
الفاصلة منقوطة تفصل العبارات في PHP عن بعضها لتشكل كل منها
تعليمة برمجية منفصلة.
3. Whitespace :
تُعرف المسافات
بين الحروف مثل الأسطر الجديد والمسافات وعلامات التبويب باسم مسافة بيضاء.
تتجاهل المتصفحات هذه المسافة البيضاء ضمن HTML حتى أن مترجمات PHP تتجاهلها أيضاً.
تتجاهل المتصفحات هذه المسافة البيضاء ضمن HTML حتى أن مترجمات PHP تتجاهلها أيضاً.
بفرض لدينا الكود التالي:
<h1>Welcome to Bob's Auto Parts!</h1>
<p>What would you like to order today?</p>
والكود
التالي:
<h1>Welcome to Bob's
Auto Parts!</h1>
<p>What would you like
to order today?</p>
كلاهما لهما
النتيجة نفسها على المتصفح ، ومع ذلك ، يمكنك استخدام مسافة بيضاء بشكل معقول في
كتابة كود الـ HTML كوسيلة مساعدة لتعزيز إمكانية قراءة الكود وينطبق الشيء نفسه على PHP.
4. Comments :
التعليقات في
التعليمات البرمجية هي عبارة عن ملاحظات للأشخاص الذين يقرؤون الكود.
يمكن استخدام التعليقات لشرح الغرض من البرنامج النصي ، ومن
الذي كتبه ، ولماذا تمت كتابته ، و الطريقة التي كتب بها.......
يتجاهل مترجم PHP أي نص في التعليقات حيث يتخطاها مما يجعلها تعادل مساحة
بيضاء.
يدعم PHP التعليقات المتعدد الأسطر
على الشكل التالي:
/* Author: Bob Smith
Last modified: April 10
This script processes the customer orders.
*/
يجب أن تبدأ التعليقات متعددة الأسطر بـ / * وتنتهي بـ * / ولا يمكن أن تكون
متداخلة.
يمكن أيضًا استخدام التعليقات ذات سطر واحد على أحد الشكلين
التاليين:
echo '<p>Order
processed.</p>'; // Start printing order
echo '<p>Order
processed.</p>'; # Start printing order
في كل من هذه النمطين السابقين ، كل شيء يكتب بعد الرمز (# أو //) يعتبر تعليق.
أما في الشكل التالي :
// here is a
comment ?> here is not
فالنص قبل علامة الإغلاق ?> يعتبر تعليق ، أما النص
بعد هذه العلامة سيعامل على أنه HTML لأنه خارج العلامة
الختامية.
ثانياً : إضافة محتوى ديناميكي:
حتى الآن ، لم
نستخدم لغة PHP لفعل أي شيء لا يمكنك فعله
باستخدام HTML عادي.
إن السبب
الرئيسي لاستخدام لغة البرمجة PHP (وهي لغة من
جهة المخدم) هو القدرة على توفير ديناميكية المحتوى لمستخدمي المواقع.
سوف نقوم بشرح
تطبيق مهم يتغير فيه المحتوى وفقًا لاحتياجات المستخدمين أو مع مرور الوقت الذي
سوف يحافظ فيه الزوار على العودة إلى الموقع.
استبدل كود PHP في الملف processorder.php بما يلي:
<?php
echo "<p>Order processed
at ";
echo date('H:i, jS F Y');
echo "</p>";
?>
يمكن كتابة الكود السابق على سطر واحد باستخدام النقطة (.) التي تقوم بضم
المحارف على الشكل التالي:
<?php
echo "<p>Order processed
at ".date('H:i, jS F Y')."</p>";
?>
هنا يوجد
التابع date() المبنية مسبقاً
ضمن الـ PHP التي تخبر الزائر بالتاريخ والوقت الذي تمت فيه
معالجة الطلب.
ستكون هذه
المعلومات مختلفة في كل مرة يتم فيها تشغيل البرنامج النصي.
· استدعاء التوابع:
انظر إلى استدعاء التابع
date() في المثال السابق ، هذا هو
الشكل العام لاستدعاء التوابع ، حيث يوجد ضمن لغة PHP مكتبة واسعة من التوابع
التي يمكنك استخدامها عند برمجة تطبيقات الويب، وأغلب هذه الوظائف تحتاج إلى تمرير
بعض البيانات إليها وإرجاع بعض البيانات.
نلاحظ في الاستدعاء التالي date('H:i,
jS F') أنه تم تمرير string (سلسلة محارف) إلى التابع داخل زوج من الأقواس.
تسمى العناصر التي تمرر للتوابع والموجودة داخل الأقواس المعاملات parameters ، وهي الإدخال الذي سوف يستخدمه التابع لإخراج بعض النتائج المحددة.
تسمى العناصر التي تمرر للتوابع والموجودة داخل الأقواس المعاملات parameters ، وهي الإدخال الذي سوف يستخدمه التابع لإخراج بعض النتائج المحددة.
· استخدام الدالة أو التابع date() :
المعاملات التي يجب تمريرها إلى الدالة date () عبارة عن string تمثل لأسلوب الذي نريده في
إخراج النتيجة يمثل كل حرف في السلسلة جزءًا واحدًا من التاريخ و الزمن.
H : يعبر عن الساعة بتنسيق 24 ساعة مع وجود صفر عند الحاجة.
i : يعبر عن
الدقائق مع وجود صفر عند الحاجة.
j : يعبر عن اليوم من الشهر و بدون وجود صفر.
j : يعبر عن اليوم من الشهر و بدون وجود صفر.
S : يمثل اللاحقة التي تفيد الترتيب th .
F : يعبر عن الاسم الكامل لهذا الشهر.
وسوف نتناول شرح أكبر عن هذه الدالة فيما بعد.
ثالثاً: الوصول إلى المتغيرات النموذج Form :
· متغيرات النموذج Form :
ضمن برنامج الـ PHP يمكن الوصول إلى كل حقل في النموذج form واعتباره متغير variable من متغيرات PHP ، ويرتبط اسم هذا المتغير
باسم الحقل في النموذج form .
جميع أسماء المتغيرات في PHP تبدأ بعلامة الدولار ($). (نسيان علامة الدولار خطأ شائع في البرمجة)
لو فرضنا وجود الحقل tireqty ونريد الوصول إلى محتوياته ، عنده سنكتب الطريقة التالية:
$_POST [ 'tireqty']
حيث $_POST هي مصفوفة تحتوي على بيانات تم إرسالها عبر طلب HTTP POST ، أي أنه تم تعيين الطريقة method=”post” في النموذج form.
و هناك ثلاثة من هذه المصفوفات التي قد تحتوي على بيانات النموذج وهي :
جميع أسماء المتغيرات في PHP تبدأ بعلامة الدولار ($). (نسيان علامة الدولار خطأ شائع في البرمجة)
لو فرضنا وجود الحقل tireqty ونريد الوصول إلى محتوياته ، عنده سنكتب الطريقة التالية:
$_POST [ 'tireqty']
حيث $_POST هي مصفوفة تحتوي على بيانات تم إرسالها عبر طلب HTTP POST ، أي أنه تم تعيين الطريقة method=”post” في النموذج form.
و هناك ثلاثة من هذه المصفوفات التي قد تحتوي على بيانات النموذج وهي :
$_POST ,
$_GET $_REQUEST ,
حيث تحتوي المصفوفة $ _REQUEST على مزيج من جميع البيانات المقدمة عبر GET أو POST .
وحتى نقوم بنسخ قيمة متغير واحد إلى آخر، نستخدم علامة
المساواة في لغة PHP (=) على الشكل
التالي:
$tireqty = $_POST ['tireqty']
حيث نقوم هنا بإنشاء متغير جديد اسمه $tireqty وننسخ محتويات $POST ['tireqty']
إليه.
لنضع الكود التالي في ملف الـ PHP:
<?php
// create short variable names
$tireqty = $_POST['tireqty'];
$oilqty = $_POST['oilqty'];
$sparkqty = $_POST['sparkqty'];
?>
هذا الكود لن يعطي أي إخراج لذا من الممكن وضع أعلى أو أسفل
<html> في ملف الـ HTML وبدون أي فرق لكن غالبا ما نضع مثل هذه الكتل في
بداية البرنامج
النصي ليكون العثور عليها أسهل.
في الكود السابق أنشأنا ثلاثة متغيرات جديدة : $tireqty $oilqty , $sparkqty ,
في الكود السابق أنشأنا ثلاثة متغيرات جديدة : $tireqty $oilqty , $sparkqty ,
يمكننا إخراج
قيم هذه المتغيرات إلى المستعرض على الشكل التالي:
echo $tireqty.' tires <br
/>';
ومع ذلك لا ينصح بهذه الطريقة لأننا لم نقم بفحص المتغيرات للتحقق من صحة البيانات المدخلة من قبل المستخدم (حاول إدخال بيانات خاطئة عن عمد ولاحظ ما يحدث) وهذا أمر بالغ الأهمية.
في الوقت الحالي يكفي أن نعرف أنه يجب علينا تمرير البيانات
التي أدخلها المستخدم إلى دالة تسمى htmlspecialchars () وذلك قبل إظهارها على المتصفح وبالتلي يجب أن نكتب
مثلاً:
echo htmlspecialchars ($tireqty).' tires <br />';
لجعل البرنامج النصي يبدأ في فعل شيء ما بشكل مرئي على المتصفح نضيف الأسطر التالية إلى أسفل برنامج الـ PHP السابق:
echo '<p>Your order is as
follows: </p>';
echo htmlspecialchars($tireqty).'
tires<br />';
echo htmlspecialchars($oilqty).'
bottles of oil<br />';
echo htmlspecialchars($sparkqty).' spark plugs<br />';
وعند التنفيذ ستكون النتيجة على الشكل التالي:
· String Concatenation :
في المثال السابق يقوم البرنامج من خلال التعليمة echo بطباعة القيمة التي كتبها المستخدم في كل حقل من النموذج form متبوعة بنص توضيحي.
بالرجوع إلى عبارة الطباعة نلاحظ وجود نقطة (.) بين اسم
المتغير والنص التالي له مثل :
echo htmlspecialchars($tireqty).'
tires<br />';
هذه النقطة هي التي تقوم بالجمع بين أكثر من string ، و نستستخدمها غالبًا عندما نريد طباعة النتائج دفعة واحدة مع تعليمة echo واحدة دون
الحاجة إلى تكرار هذه التعليمة عدة مرات مع كل عملية طباعة.
أيضاً يمكن طباعة قيمة متغير ما من خلال وضع المتغير داخل سلسلة ذات علامات اقتباس مزدوجة كما في المثال التالي:
أيضاً يمكن طباعة قيمة متغير ما من خلال وضع المتغير داخل سلسلة ذات علامات اقتباس مزدوجة كما في المثال التالي:
$tireqty =
htmlspecialchars($tireqty);
echo "$tireqty tires<br
/>";
هذا الكود مكافئ للكود السابق وله نفس النتيجة ، وتسمى
عملية استبدال المتغير بمحتوياته داخل سلسلة ذات علامات الاقتباس المزدوجة بـ interpolation وهذه العملية لا تصلح في حال كانت
علامة الاقتباس فمثلاً:
echo '$tireqty tires<br />';
في هذا الكود لا يتم استبدال المتغير بقيمته إنما يرسل كنص
كما هو إلى المتصفح.
رابعاً: فهم المعرفات identifiers :
المعرفات هي أسماء المتغيرات variables ، الدوال functions ، الصفوف classes .
هناك مجموعة من القواعد البسيطة التي يجب أخذها بعين الاعتبار عند الإعلان عن المعرفات وهي:
·
يمكن أن تكون المعرفات من
أي طول ويمكن أن تتكون من أحرف وأرقام.
·
لا يمكن أن تبدأ المعرفات
برقم.
·
المعرفات في PHP حساسة لحالة الأحرف باستثناء أسماء الدوال functions حيث يمكن استخدام أسمائهم في أي حال.
·
يمكن أن يكون للمتغير نفس
اسم الـ function لكن هذا مربك في الاستخدام لذا يجب تجنب ذلك ،
لكن لا يمكن إنشاء function بنفس اسم function أخرى.
خامساً: كيفية إنشاء المتغيرات:
أحد ميزات PHP هو أنه لا يتطلب منك أن تعلن عن المتغيرات قبل استخدامها
حيث يتم إنشاء متغير عندما تقوم أولاً بتعيين قيمة إليه ، ويتم تعيين قيمة لمتغير
ما باستخدام عامل التعيين (=) كما فعلنا عند نسخ قيمة متغير إلى آخر.
فمثلاً في موقع
بوب ، نريد معرفة العدد الإجمالي للعناصر المطلوبة والمبلغ الإجمالي الذي يجب دفعه
، لذا نقوم بإنشاء متغيرين لتخزين هذه الأرقام .
في البداية نحتاج إلى تهيئة كل من هذه المتغيرات إلى الصفر على الشكل التالي:
في البداية نحتاج إلى تهيئة كل من هذه المتغيرات إلى الصفر على الشكل التالي:
$totalqty = 0;
$totalamount = 0.00;
سادساً: دراسة أنواع المتغيرات:
يشير نوع
المتغير إلى نوع البيانات المخزنة فيه.
· أنواع بيانات PHP:
يدعم PHP أنواع البيانات التالية:
·
Integer
: عدد صحيح يستخدم للأعداد
الصحيحة.
·
Float or double : عدد حقيقي يستخدم للأرقام الحقيقية.
·
String :
تستخدم للمحارف أو السلاسل المحرفية.
·
Boolean : تستخدم لقيم صحيحة أو خاطئة
(قيم منطقية).
·
Array :
مصفوفة
تستخدم لتخزين عدة
عناصر.
·
Object :
غرض أو كائن يستخدم لتمثيل الصفوف classes .
·
NULL : المتغيرات التي لم يتم منحها قيمة ، أو لم يتم ضبطها ، أو
تم منحها القيمة المحددة NULL من النوع NULL.
·
resource :
هناك توابع functions
مبنية ضمن PHP تقوم بإرجاع متغيرات من نوع resources أي أن هذه المتغيرات هي موارد
مثل التوابع المتعلقة بالاتصال بقواعد البيانات ، وهذه المتغيرات لا نستطيع
التعامل معها بشكل مباشر لكن يتم إرجاعهم بواسطة توابع ويجب تمريرها كمعاملات إلى توابع
أخرى.
·
Callables : هي في الأساس توابع functions يتم تمريرها إلى توابع أخرى.
· قوة الأنماط:
يطلق على لغة PHP أنها لغة الأنماط الضعيفة أو لغة الأنماط المكتوبة
ديناميكيًا.
في معظم لغات البرمجة ، يمكن للمتغيرات الاحتفاظ
بنوع واحد فقط من البيانات ، ويجب الإعلان عن هذا النوع قبل استخدام المتغير ، لكن
في لغة PHP يتم تحديد نوع المتغير عند إعطائه القيمة
المخصصة له.
على سبيل المثال ، نقوم بإنشاء المتغيرات $totalqty و $totalamount على الشكل التالي:
$totalqty = 0;
$totalamount = 0.00;
و نظرًا لأننا قمنا بتعيين
عدد صحيح إلى $totalqty أصبح هذا متغير من نوع integer ، وبالمثل أصبح $totalamount من النوع
float.
لكن الغريب أنه يمكننا الآن إضافة سطر إلى النص الخاص بنا على
النحو التالي:
$totalamount = 'Hello';
المتغير $totalamount سيكون عندها
من نوع string ، أي أنه في لغة PHP يتغير نوع المتغير وفقاً لما يتم تخزينه فيه وفي
أي وقت محدد.
هذه القدرة على تغيير الأنواع بشفافية أثناء التنقل يمكن أن
تكون مفيدة للغاية ، حيث تستطيع لغة PHP أن تعرف وبشكل
أوتوماتيكي نوع البيانات الموجودة داخل المتغير و تقوم بإرجاع البيانات مع نفس النوع
عند استعادة المتغير.
· Type Casting:
نستطيع
في PHP تطبيق هذه الميزة على الشكل التالي:
$totalqty = 0;
$totalamount = (float)$totalqty;
الكود
في السطر الثاني يعني أخذ القيمة المخزنة
ضمن المتغير $totalqty وتفسيرها على
أنها float وتخزينها في المتغير $totalamount ، وبالتالي نكون قد عرفنا متغير
$totalamount من النوع float يحوي نفس قيمة المتغير $totalqty دون أن نغير في نوع هذا المتغير.
يوجد في PHP توابع functions مبنية مسبقاً من أجل اختبار الأنماط وتعديلها.
· المتغيرات المتغيرة Variable Variables :
يوفر PHP ميزة أخرى تسمى تغيير المتغير
أي يمكننا تغيير اسم المتغير بشكل ديناميكي.
على سبيل المثال ، يمكنك أن نكتب:
$varname = 'tireqty';
وبالتالي يمكننا الآن كتابة $$varname بدلاً من $tireqty على
سبيل المثال ، يمكنك ضبط قيمة
الإطارات على النحو التالي: $$varname = 5;
هذا يعادل: $tireqty = 5;
قد يبدو هذا غامضًا إلى حد ما ، لكننا سنعيد النظر في
استخدامه لاحقًا.
سابعاً : كيفية تعريف الثوابت واستخدامها:
كما رأينا
سابقًا ، يمكنك بسهولة تغيير القيمة المخزنة في متغير ، لكن هذا مختلف بالنسبة
للثوابت حيث يتم تعريف الثوابت وإعطاؤها قيمة معينة لمرة واحدة فقط ولا يمكن تغييرها في أي مكان آخر في البرنامج
النصي.
ويتم ذلك عن
طريق الدالة define على الشكل
التالي:
يمكن تعريف هذه
الثوابت باستخدام دالة التعريف:
define('TIREPRICE',
100);
define('OILPRICE',
10);
define('SPARKPRICE', 4);
لاحظ أن أسماء
الثوابت تكتب بأحرف كبيرة ، حيث تم اقتراح ذلك حتى يكون من السهل التمييز بين
المتغيرات والثوابت ، أي أن هذا الاصطلاح ليس مطلوبًا ولكنه أفضل لأنه سيجعل الكود
أسهل في القراءة والصيانة.
أحد الاختلافات
المهمة بين الثوابت والمتغيرات هو أنه عندما نشير إلى ثابت ما لا نحتاج إلى علامة
الدولار أمامه، أي إذا كنا نريد استخدام قيمة ثابت ما فيكفي استخدام الاسم فقط.
على سبيل
المثال لاستخدام أحد الثوابت التي تم إنشاؤها سابقاً يمكننا فقط أن نكتب : echo TIREPRICE;
بالإضافة إلى
الثوابت التي نقوم بتحديدها في برامجنا ، يوجد لدى لغة PHP عدد كبير من الثوابت المعرفة بشكل
مسبق ، حيث يمكننا أن نحصل على نظرة عامة عليها من خلال تشغيل الدالة phpinfo () التي تقوم بإعطاء قائمة بالمتغيرات
والثوابت الموجودة مسبقاً في لغة PHP بالإضافة إلى فوائد أخرى سنذكرها لاحقاً.
أحد الاختلافات
الأخرى بين المتغيرات والثوابت هو أن الثوابت يمكنها تخزين منطقية Boolean ، أعدد صحيحة integer ، float ، string تُعرف هذه الأنواع مجتمعة باسم القيم العددية ، أما غير ذلك من
الأنواع لا يمكن تخزينها ضمن الثوابت.
ثامناً: معرفة ما هو مجال أو نطاق ( scope ) المتغيرات:
يشير مصطلح
النطاق أو المجال scope إلى
الأماكن التي يكون فيها المتغير مرئيًا ضمن البرنامج النصي.
قواعد النطاق
أو المجال الأساسية الستة في PHP هي كما يلي:
·
المتغيرات المبنية مسبقاً
ضمن الـ PHP تكون مرئية في كل مكان ضمن البرنامج النصي.
·
الثوابت ، بمجرد الإعلان عنها
، تكون مرئية دائمًا ويمكن استخدامها داخل التوابع functions وخارجها.
·
المتغيرات العامة global التي تم
الإعلان عنها في البرنامج النصي تكون مرئية خلال هذا البرنامج النصي ، ولكن لا
تكون مرئية داخل التوابع functions .
·
المتغيرات الموجودة داخل
التوابع functions والتي
تم الإعلان عنها بأنها متغيرات عامة global تشير إلى المتغيرات العامة التي لها نفس الاسم.
·
المتغيرات التي يتم إنشاؤها
داخل التوابع functions والمعلن عنها بأنها متغيرات ثابتة
static تكون غير مرئية من خارج
التوابع ولكن يجب الحفاظ على قيمتها بين كل
تنفيذ وآخر للتابع.
·
المتغيرات التي يتم إنشاؤها
داخل التوابع هي متغيرات محلية local ضمن التوابع
وتنقطع عن الوجود عند انتهاء هذه التوابع.
المصفوفات $_GET , $_POST وبعض المتغيرات الخاصة الأخرى والتي
تعرف باسم superglobals
يمكن رؤيتها في كل مكان داخل وخارج التوابع functions .
وهذه قائمة
كاملة بهذه المتغيرات superglobals كما يلي:
·
$GLOBALS :
وهي مصفوفة تحوي جميع المتغيرات العامة global وهي تسمح لنا بالوصول إلى
المتغيرات العامة الموجودة حتى داخل التوابع ، مثال : $GLOBALS['myvariable'] .
·
$_SERVER : وهي مصفوفة تحوي المتغيرات المتعلقة ببيئة
المخدم.
·
$_GET : وهي مصفوفة تحوي المتغيرات التي يتم تمريرها
إلى البرنامج النصي عبر الطريقة GET.
·
$_POST : وهي مصفوفة تحوي المتغيرات
التي يتم تمريرها إلى البرنامج النصي عبر الطريقة POST.
·
$_COOKIE : وهي مصفوفة تحوي المتغيرات المتعلقة بملفات
تعريف الارتباط cookie .
·
$_FILES : وهي مصفوفة تحوي المتغيرات المتعلقة بتحميل
الملفات .
·
$_ENV : وهي مصفوفة تحوي متغيرات البيئة.
·
$_REQUEST :
وهي مصفوفة
تحوي جميع المدخلات التي تتم عن طريق المستخدم بما في ذلك محتويات الإدخال وأيضاً $_GET , $_POST , $_COOKIE
لكن لا تحوي $_FILES .
·
$_SESSION : وهي مصفوفة تحوي متغيرات الجلسة session .
تاسعاً : فهم التعابير البرمجية (العمليات ، الأولويات) :
1- استخدام العمليات operators :
Operators : هي الرموز التي يمكنك
استخدامها لمعالجة القيم والمتغيرات عن طريق إجراء بعض العمليات عليها.
لقد ذكرنا سابقاً عاملين: عملية تعيين أو اسناد القيم (=) ،
وعملية جمع السلاسل المحرفية معاً (.) .
بشكل عام ، يمكن للـ operators أن تأخذ وسيط أو اثنتين أو ثلاث ،
على سبيل المثال ، تأخذ عملية إسناد القيم وسيطين هما موقع التخزين على الجانب
الأيسر من الرمز = وما نريد تخزينه على الجانب الأيمن.
2- العمليات الحسابية Arithmetic Operators :
-
الجمع : رمزه (+)
وتكتب عبارة الجمع على الشكل : $a + $b .
-
الطرح : رمزه (-)
وتكتب عبارة الطرح على الشكل : $a - $b .
-
الضرب : رمزه (*) وتكتب عبارة الضرب على الشكل : $a * $b .
-
القسمة : رمزه (/)
وتكتب عبارة القسمة على الشكل : $a / $b .
-
الباقي : رمزه (%)
وتكتب عبارة الباقي على الشكل : $a % $b .
وبكل عملية من العمليات السابقة يمكن تخزين النتيجة على
الشكل التالي:
$result = $a + $b;
يمكن أيضًا استخدام رمز الطرح (-) للإشارة إلى الأرقام
السالبة ، كما في هذا المثال:
$a = -1;
بالنسبة للعملية % فهي
عملية حساب باقي القسمة ، كما في المثال:
$a = 27;
$b = 10;
$result
= $a%$b;
القيمة المخزنة في متغير النتيجة result هي الباقي عند قسمة 27 على 10 ،
أي 7.
يجب ملاحظة أن العمليات الحسابية يتم تطبيقها عادة على
الأعداد الصحيحة أو الحقيقية ، أما إذا قمنا بتطبيقها على السلسلة string سيحاول PHP تحويل هذه السلسلة إلى أرقام ويحاول إيجاد النتيجة ، و إذا
كانت السلسلة تحتوي على الحرف e أو E سيتم قراءتها على أنها
تدوين علمي وتحويلها إلى عدد حقيقي ، وفي حال عدم وجود نتيجة ستكون النتيجة صفر.
3- العمليات على السلاسل المحرفية String Operators :
لقد رأينا سابقاً العملية (.) التي تستخدم لإضافة سلسلتين إلى
بعضهما على الشكل التالي:
$a = "Bob's ";
$b = "Auto Parts";
$result
= $a.$b;
يحتوي متغير
النتيجة result الآن على السلسلة "Bob's Auto Parts" .
4- عمليات الإسناد Assignment Operators :
لقد رأينا
سابقاً العملية (=) التي تقوم بإسناد قيمة أو تعبير إلى أي متغير ، فمثلاُ التعبير
: $totalqty= 0;
يعني أنه تم
ضبط المتغير $totalqty على الصفر.
5- القيمة المرجعة من عملية الإسناد:
ليكن لدينا التعبير
التالي:
$b = 6 + ($a = 5);
يعطي هذا
السطر المتغير $b القيمة 11 التي هي ناتج العمليات الموجودة
بالطرف الأيمن ، أي قيمة التعبير الموجود بالطرف الأيمن ، و يمكن استخدام الأقواس
لتوضيح الأولوية في أداء العمليات.
6- عمليات الإسناد المدمجة:
بالإضافة إلى عملية
الإسناد البسيطة يوجد مجموعة من عمليات الإسناد المدمجة التي تعطينا طريقة مختصر
لتطبيق عملية ما على متغير و تخزين الناتج في هذا المتغير بنفس الوقت ،
فمثلاً هذا التعبير: $a += 5;
يعادل التعبير
التالي : $a = $a + 5;
فالعملية
الجديدة هنا هي =+
عمليات الإسناد
المدمجة موجودة لكل من العمليات الحسابية والعمليات على السلاسل المحرفية على
الشكل التالي:
+= $a
+= $b $a = $a + $b
- = $a -= $b $a
= $a - $b
*= $a *= $b $a = $a * $b
/= $a /= $b $a = $a / $b
%= $a
%= $b $a = $a % $b
.= $a
.= $b $a = $a . $b
7- عمليات الزيادة والنقصان:
عملية الزيادة
هي (++)
و عملية النقصان هي (- -) وهي مشابهة للعمليات (+ =) (- =) ، حيث تقوم
بعملية الزيادة أو النقصان لمتغير ما و تخزن النتيجة بنفس المتغير وبنفس الوقت على
الشكل التالي:
$a=4;
echo
++$a;
حيث يقوم
السطر الثاني بزيادة المتغير $a بمقدار واحد و يخزن النتيجة بنفس المتغير و
من ثم يطبع النتيجة الجديدة ، أي أصبح المتغير $a يحوي العدد 5 ونتيجة الطباعة هي 5.
لكن يجب
الانتباه أن هذه العمليات (الزيادة أو النقصان ) يمكن أن تكتب قبل المتغير أو بعده
، و كل حالة تعطي نتيجة مختلفة ، فمثلاً لننظر إلى المثال التالي:
$a=4;
echo $a++;
يقوم السطر
الثاني هنا بطباعة القيمة الموجودة في المتغير $a وبعدها يقوم بزيادة هذا المتغير بمقدار واحد ويضع نتيجة
الزيادة في نفس المتغير $a ، أي أصبح
المتغير $a يحوي العدد 5 لكن نتيجة الطباعة هي 4.
إذا هناك فرق
بين كتابة عملية الزيادة قبل أو بعد المتغير ، ونفس الكلام السابق ينطبق على عملية
النقصان أيضاً.
8- عملية الإرجاع Reference Operator :
عملية الإرجاع
لها الرمز (& ، علامة الضم) ، وتستخدم
مع عملية الإسناد.
عادة عندما تتم
عملية إسناد متغير إلى آخر ، يتم إجراء نسخة من المتغير الأول و تخزينها في مكان
آخر في الذاكرة ، فمثلاً عندما نكتب
:
$a = 5;
$b =
$a;
يتم هنا إجراء
نسخة ثانية من القيمة $a وتخزينها في $b ، وبالتالي
التغيير على قيمة $a لا يؤثر على قيمة $b .
يمكنك تجنب
عمل مثل هذه النسخة باستخدام عملية الإرجاع على الشكل التالي:
$a = 5;
$b = &$a;
$a =
7; // $a and $b are now both 7
يمكن أن تكون
المراجع صعبة بعض الشيء لكن تذكر أن المرجع يشبه الاسم المستعار ، في هذا
المثال يشير كل من $a و $b إلى نفس قطعة
الذاكرة وبالتالي تغيير أحدهما يؤدي إلى تغيير الآخر.
يمكن إلغاء ما
سبق من خلال : unset($a);
فهذه التعليمة
البرمجية unset لا تؤدي إلى تغيير قيمة $b التي هي 7 ولكن
فقط تقطع الرابط بين $a و القيمة 7 المخزنة في الذاكرة.
9- عمليات المقارنة:
تقوم عمليات المقارنة
بمقارنة قيمتين وتعيد لنا النتيجة على شكل قيمة منطقية (true or false) اعتمادًا على نتيجة المقارنة.
·
عملية المساواة:
لها الرمز (==)
وتمكننا من اختبار ما إذا كانت هناك قيمتان متساويتان على الشكل التالي:
$a == $b
هنا تتم عملية
مقارنة القيم المخزنة في $a و $b ، والنتيجة
التي سوف يتم إرجاعها إما True في حال
تساوي القيم أو false في حال عدم تساوي القيم.
يجب الانتباه
إلى عدم الخلط بين عملية المساواة ( == )
و عملية الإسناد ( = ) لأن مثل هذه الأخطاء يكون من الصعب العثور عليها حتى
في حال قمت بتشغيل مصحح الأخطاء.
·
عمليات المقارنة الأخرى:
يدعم PHP أيضًا عددًا من عمليات المقارنة الأخرى وهي على الشكل
التالي: .
-
-
المساواة : رمزها (==) وتكتب
عبارة المساواة على الشكل : $a
== $b .
-
المطابقة : رمزها (===)
وتكتب عبارة المطابقة على الشكل : $a == $b
لا بد
أن نلاحظ هنا أن نتيجة المطابقة لا تكون true إلا إذا تحقق التساوي
بالقيمة والنوع معاً.
مثلاً
: نتيجة التعبير 0 == '0' هي True
بينما نتيجة التعبير 0 === '0' هي false
-
عدم المساواة : رمزها
(!=) وتكتب عبارة عدم المساواة على الشكل : $a
!= $b .
-
عدم
المطابقة : رمزها (!==) وتكتب عبارة عدم المطابقة على الشكل : $a
!== $b .
-
عدم المساواة : رمزها
(<>) وتكتب عبارة عدم المساواة على الشكل : $a
<> $b .
-
أقل
من : رمزها (<) وتكتب عبارة أقل من على الشكل : $a < $b
.
-
أكبر من : رمزها
(>) وتكتب عبارة أكبر من على الشكل : $a > $b
.
-
أقل
من أو يساوي : رمزها (<=) وتكتب
عبارة أقل من أو يساوي على الشكل : $a<= $b
.
-
أكبر من أو يساوي : رمزها (>=) وتكتب
عبارة أكبر من أو يساوي على الشكل : $a>=$b
.
10- العمليات المنطقية:
العمليات
المنطقية تدمج نتائج الشروط المنطقية ، فمثلاً إذا كنا نريد معرفة الحالة التي تكون
فيها قيمة المتغير $a بين
0 و 100 سنحتاج إلى اختبار الشرطين $a> = 0 و $a
<= 100 ، باستخدام العملية
المنطقية AND والتي لها الرمز (&&) كما يلي:
$a >= 0 && $a <=100
إذاً تدعم لغة
PHP العمليات المنطقية , AND , OR , XOR NOT على الشكل التالي:
-
-
العملية NOT أي النفي :
لها الرمز (!) وتكتب على
الشكل : !$b وتكون النتيجة
true في
حال كان المتغير $b هو false والعكس صحيح.
-
العملية AND :
لها الرمز (&&)
وتكتب على الشكل : $a && $b وتكون النتيجة
true في
حال كان $a و $b كلاهما true أما خلاف ذلك تكون النتيجة false .
-
العملية OR :
لها الرمز (||) وتكتب على الشكل : $a || $b وتكون النتيجة
true في
حال كان $a أو $b أو كلاهما true أما خلاف
ذلك تكون النتيجة false .
-
العملية and :
لها الرمز (and) وتكتب على الشكل : $a and $b وهي مشابهة
للعملية (&&) لكن مع
أولوية أقل.
-
العملية or :
لها الرمز (or) وتكتب على الشكل : $a or $b وهي مشابهة
للعملية (||) لكن مع أولوية أقل.
-
العملية XOR :
لها الرمز (xor) وتكتب على الشكل : $a xor $b وتكون النتيجة
true في
حال كان $a أو $b
true أما إذا كان كلاهما true أو
كلاهما false تكون النتيجة false .
11- العمليات المختصة بالـ bits :
تتعامل هذه
العمليات مع العدد الصحيح على أنه سلسلة من البتات المستخدمة لتمثيله.
حيث تدعم لغة PHP العمليات التالية:
-
العملية AND الخاصة
بالبتات وتسمى Bitwise AND :
لها الرمز (&) وتكتب على الشكل : $a & $b حيث
يتم تطبيق عملية AND
منطقية على البتات في $a و $b .
-
العملية OR الخاصة
بالبتات وتسمى Bitwise OR :
لها الرمز (|) وتكتب على الشكل : $a | $b حيث يتم تطبيق عملية OR منطقية على البتات في $a و $b .
-
العملية NOT الخاصة
بالبتات وتسمى Bitwise NOT :
لها الرمز (~) وتكتب على الشكل : ~ $a حيث يتم تطبيق عملية NOT
منطقية على البتات في $a .
-
العملية XOR الخاصة
بالبتات وتسمى Bitwise XOR :
لها الرمز (^) وتكتب على
الشكل : $a ^ $b حيث
يتم تطبيق عملية XOR منطقية على البتات في $a و $b .
-
عملية الإزاحة لليسار وتسمى Left shift
:
لها الرمز (<<) وتكتب على
الشكل : $a << $b وتعني
إزاحة البتات في السلسلة $a
إلى اليسار بمقدار $b
-
عملية الإزاحة لليمين وتسمى Right shift
:
لها الرمز (>>) وتكتب على
الشكل : $a >> $b وتعني
إزاحة البتات في السلسلة $a
إلى اليمين بمقدار $b
12- العمليات الأخرى في PHP :
بالإضافة إلى العمليات
التي رأيناها ، يوجد عمليات أخرى هي:
·
الفاصلة :
رمزها (,) وهي تفصل بين الوسطاء التي تمرر للتوابع functions وغيرها من قوائم العناصر التي تكون مكتوبة إلى جانب بعضها.
·
New , -> :
وتستخدم لإنشاء
نسخة من class وللوصول إلى العناصر داخل الـ class .
13- العملية الثلاثية (?:) :
ولها الشكل التالي :
condition ? value if true : value if false
أي نكتب :
شرط ؟ قيمة إذا كانت النتيجة صحيحة : قيمة
إذا كانت النتيجة خاطئة
مثال :
($grade >= 50 ? 'Passed' : 'Failed')
حيث يقوم هذا
التعبير بتقييم درجات الطالب : فإذا كانت فوق 50 فهذا يعني نجاح الطالب وإلا فهو
راسب.
14- عملية قمع الخطأ :
لها الرمز (@) حيث يمكن وضعها أمام أي تعبير لديه قيمة أو
سوف يولد قيمة على الشكل التالي:
$a = @(57/0);
في هذا المثال لو لم نضع رمز قمع الخطأ
لكان البرنامج سيعطينا تحذير من
القسمة على الصفر بينما مع وجود الرمز يتم قمع الخطأ . وهنا لا بد من كتابة بعض
التعليمات البرمجية لمعالجة مثل هذه الأخطاء.
15- عملية التنفيذ :
لها الرمز (``) ويسمى هذا الرمز backticks
، حيث يحاول PHP تنفيذ كل التعابير الموجودة بين backticks كأمر من أوامر server’s command line
أي كأمر في سطر أوامر المخدم
وتكون نتيجة التعابير هي نتيجة هذا الأمر.
على سبيل
المثال ، على مخدم ويندوز ، يمكنك أن نكتب :
$out = `dir c:`;
echo '<pre>'.$out.'</pre>';
هنا في هذا
الكود نحصل على قائمة الملفات الموجودة في السواقة c ونخزنها في
المتغير $out و
بعد ذلك نقوم بطباعة هذه القائمة على المتصفح ، أويمكن التعامل معها بأي طريقة
أخرى.
16- عمليات المصفوفات :
هناك العديد
من العمليات على المصفوفات ، ونستطيع من خلال الرمز ([]) الوصول إلى عناصر المصفوفة.
سنذكر الآن
بعضاً من هذه العمليات:
-
-
عملية الاتحاد أو الدمج:
لها الرمز (+) وتكتب على
الشكل : $a + $b حيث
$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 في حال كانت المصفوفتين غير متطابقتين.
17- The Type Operator :
عملية
النمط Type Operator
تكتب على الشكل التالي : instanceof وتستخدم في
البرمجة الغرضية التوجه حيث تسمح لنا بالتحقق مما إذا كان كائن ما object هو غرض أو
نسخة من class محدد ، وذلك
على الشكل التالي:
class sampleClass{};
$myObject = new sampleClass();
if ($myObject instanceof sampleClass)
echo "myObject is an instance of
sampleClass";
تطبيق عملي:
الآن بعد أن
عرفنا كيفية استخدام العمليات في لغة PHP يمكننا تطبيق ذلك على نموذج طلب بوب ، لذا لنفرض
أننا نريد تحديد الإجماليات والضرائب في النموذج ، للقيام بذلك ، لنضيف الكود
التالي إلى أسفل نص PHP :
$totalqty = 0;
$totalqty = $tireqty + $oilqty + $sparkqty;
echo "<p>Items ordered: ".$totalqty."<br
/>";
$totalamount = 0.00;
define('TIREPRICE', 100);
define('OILPRICE', 10);
define('SPARKPRICE', 4);
$totalamount = $tireqty * TIREPRICE +
$oilqty * OILPRICE + $sparkqty * SPARKPRICE;
echo "Subtotal:
$".number_format($totalamount,2)."<br />";
$taxrate = 0.10; // local sales tax is 10%
$totalamount = $totalamount * (1 + $taxrate);
echo "Total including tax:
$".number_format($totalamount,2)."</p>";
لاحظ أننا
استخدمنا العديد من العوامل مثل الجمع (+) والضرب (*) و النقطة (.)لإعداد النتيجة
إلى المتصفح.
كما أننا
استخدمنا الدالة number_format () لتنسيق النتائج بحيث يكون
لدينا عددين فقط بعد الفاصلة هذه الدالة موجودة في المكتبة Math المبنية مسبقاً ضمن الـ PHP .
إذا أعدنا
النظر في العمليات الحسابية نلاحظ أن عمليات الضرب تتم قبل الإضافات وهذا بسبب
وجود أولوية في العمليات الحسابية.
18- فهم الأولويات و الترابط:
بشكل عام ،
يكون للعمليات في الـ PHP أولوية محددة أو ترتيب محدد
تتم فيه ، كما أن لها ترابط محدد وهو ترتيب العمليات التي لها الأولوية نفسها ، وعادةً
ما يتم هذا الترتيب من اليسار إلى اليمين (left) أو من اليمين إلى اليسار (right) أو بدون وجود صلة n/a .
فيما يلي جدول
يبين الأولويات والترابط بين العمليات في الـ PHP ،
حيث توجد العمليات ذات الأولوية الأقل في الأعلى وتزداد الأولوية كلما انتقلنا إلى
أسفل الجدول.
العملية
|
الترابط
|
,
|
left
|
Or
|
left
|
Xor
|
left
|
And
|
Left
|
Print
|
Right
|
= += -= *= /= .= %= &= |= ^= ~= <<= >>=
|
Left
|
? :
|
Left
|
||
|
Left
|
&&
|
Left
|
|
|
Left
|
^
|
Left
|
&
|
Left
|
== != === !==
|
n/a
|
< <= > >=
|
n/a
|
<< >>
|
Left
|
+ - .
|
Left
|
* / %
|
Left
|
!
|
Right
|
Instanceof
|
n/a
|
~ (int)(float)(string)(array)(object)(bool) @
|
Right
|
++ --
|
n/a
|
[]
|
Right
|
clone new
|
n/a
|
()
|
n/a
|
في الجدول
السابق لم نتحدث عن أعلى أولوية والتي هي الأقواس حيث تمتلك التعابير الموجودة ضمن
الأقواس أعلى أولوية ، وبهذه الطريقة يمكننا التحكم بقواعد الأولوية السابقة عند
الحاجة إلى ذلك.
في المثال
السابق ليكن التعبير التالي:
$totalamount = $totalamount * (1 + $taxrate);
لو
كتبنا بدلاً عنه:
$totalamount = $totalamount * 1 + $taxrate;
لكانت النتيجة
مختلفة لأن عملية الضرب لها أولوية على الجمع ، أما باستخدام الأقواس استطعنا فرض
أولوية لعملية الإضافة.
يمكننا
استخدام أكبر عدد ممكن من مجموعات الأقواس كما نريد في التعبير ، و الأقواس الأعمق
لها الأولوية بالتنفيذ.
لاحظ في
الجدول السابق وجود العملية print وهي مكافئة للعملية echo فكلاهما يولد إخراج على المتصفح ، لذا يمكننا
استخدام أي منهما.
تعتبر print أو echo بالأساس functions حيث يمكن استدعاء كليهما كتابع مع وجود وسطاء
لهما بين قوسين , ويمكن أيضًا
معاملة كلاهما كمعامل بوضع السلسلة التي نريد طباعتها بكل بساطة بعد كلمة print أو echo .
عند استدعاء
الطباعة print كدالة تعطينا القيمة (1)
كنتيجة لها وهذا قد يفيدنا في بعض الأحيان إذا كنا نريد إنشاء إخراج داخل تعبير
أكثر تعقيدًا.
وسنتابع باقي النقاط في الجزء الثاني من هذه
المحاضرة.
تعليقات: 0
إرسال تعليق