We are still cooking the magic in the way!
أساسيات PHP
العوامل في PHP
العوامل في PHP
العوامل هي رموز تخبر PHP بإجراء عمليات محددة على المتغيرات والقيم. في هذا الدرس، سنستكشف جميع أنواع العوامل الرئيسية ونتعلم كيفية استخدامها بفعالية.
أنواع العوامل
تدعم PHP فئات العوامل التالية:
1. العوامل الحسابية - العمليات الرياضية
2. عوامل التعيين - تعيين القيم
3. عوامل المقارنة - مقارنة القيم
4. العوامل المنطقية - المنطق البولياني
5. عوامل النصوص - دمج النصوص
6. الزيادة/النقصان - زيادة/نقصان القيم
7. العامل الشرطي (الثلاثي) - اختصار if-else
8. عامل التحقق من null - التعامل مع القيم الفارغة
9. عوامل المصفوفات - عمليات المصفوفات
10. عامل المركبة الفضائية - مقارنة ثلاثية
1. العوامل الحسابية
تُستخدم لإجراء العمليات الحسابية:
<?php
$a = 10;
$b = 3;
// الجمع
echo $a + $b; // المخرج: 13
// الطرح
echo $a - $b; // المخرج: 7
// الضرب
echo $a * $b; // المخرج: 30
// القسمة
echo $a / $b; // المخرج: 3.3333...
// باقي القسمة (المودولو)
echo $a % $b; // المخرج: 1
// الأس (PHP 5.6+)
echo $a ** $b; // المخرج: 1000 (10^3)
// السالب
echo -$a; // المخرج: -10
?>
استخدام عملي: المودولو (%) مفيد للتحقق من الأعداد الزوجية/الفردية: if ($num % 2 == 0) يعني أن العدد زوجي.
2. عوامل التعيين
تُستخدم لتعيين القيم للمتغيرات:
<?php
// التعيين الأساسي
$x = 10;
// جمع وتعيين
$x += 5; // نفس: $x = $x + 5; النتيجة: 15
// طرح وتعيين
$x -= 3; // نفس: $x = $x - 3; النتيجة: 12
// ضرب وتعيين
$x *= 2; // نفس: $x = $x * 2; النتيجة: 24
// قسمة وتعيين
$x /= 4; // نفس: $x = $x / 4; النتيجة: 6
// مودولو وتعيين
$x %= 4; // نفس: $x = $x % 4; النتيجة: 2
// دمج وتعيين (نصوص)
$str = "مرحباً";
$str .= " بالعالم"; // النتيجة: "مرحباً بالعالم"
?>
تذكر: عوامل التعيين تعدّل المتغير الأصلي. $x += 5 يغير قيمة $x بشكل دائم.
3. عوامل المقارنة
تُستخدم لمقارنة قيمتين. تُرجع true أو false:
<?php
$a = 10;
$b = "10";
$c = 20;
// مساوٍ (يتحقق من القيمة فقط)
var_dump($a == $b); // true (10 == "10")
// متطابق (يتحقق من القيمة والنوع)
var_dump($a === $b); // false (int !== string)
// غير مساوٍ
var_dump($a != $c); // true
var_dump($a <> $c); // true (بناء جملة بديل)
// غير متطابق
var_dump($a !== $b); // true (أنواع مختلفة)
// أكبر من
var_dump($c > $a); // true (20 > 10)
// أصغر من
var_dump($a < $c); // true (10 < 20)
// أكبر من أو يساوي
var_dump($c >= 20); // true
// أصغر من أو يساوي
var_dump($a <= 10); // true
?>
مهم: استخدم دائماً === (متطابق) بدلاً من == (مساوٍ) عندما تحتاج إلى التحقق من القيمة والنوع معاً. هذا يمنع أخطاء تحويل الأنواع.
4. العوامل المنطقية
تُستخدم لدمج العبارات الشرطية:
<?php
$x = 10;
$y = 5;
$z = 20;
// AND - يجب أن يكون كلا الشرطين صحيحاً
if ($x > 5 && $y > 3) {
echo "كلا الشرطين صحيحان";
}
// OR - يجب أن يكون شرط واحد على الأقل صحيحاً
if ($x > 100 || $y < 10) {
echo "شرط واحد على الأقل صحيح";
}
// NOT - يعكس النتيجة
if (!($x < 5)) {
echo "x ليس أقل من 5";
}
// بناء جملة بديل (أولوية أقل)
if ($x > 5 and $y > 3) { // نفس &&
echo "كلاهما صحيح";
}
if ($x > 100 or $y < 10) { // نفس ||
echo "واحد صحيح";
}
// XOR - يجب أن يكون واحد فقط صحيحاً (وليس كلاهما)
if ($x > 5 xor $y > 10) {
echo "شرط واحد فقط صحيح";
}
?>
أفضل ممارسة: استخدم && و || بدلاً من 'and' و 'or' للاتساق مع لغات البرمجة الأخرى وتحكم أفضل في الأولوية.
5. عوامل النصوص
تُستخدم للعمل مع النصوص:
<?php
// عامل الدمج (.)
$firstName = "أحمد";
$lastName = "محمد";
$fullName = $firstName . " " . $lastName;
echo $fullName; // المخرج: أحمد محمد
// تعيين الدمج (.=)
$message = "مرحباً";
$message .= " بالعالم";
$message .= "!";
echo $message; // المخرج: مرحباً بالعالم!
// مثال عملي
$html = "<div>";
$html .= "<h1>العنوان</h1>";
$html .= "<p>المحتوى</p>";
$html .= "</div>";
?>
6. عوامل الزيادة/النقصان
تُستخدم لزيادة أو نقصان قيمة المتغير بمقدار 1:
<?php
$x = 10;
// زيادة لاحقة (استخدام القيمة الحالية، ثم إضافة 1)
echo $x++; // المخرج: 10، ثم $x يصبح 11
echo $x; // المخرج: 11
// زيادة سابقة (إضافة 1 أولاً، ثم استخدام القيمة الجديدة)
echo ++$x; // المخرج: 12، $x الآن 12
// نقصان لاحق (استخدام القيمة الحالية، ثم طرح 1)
echo $x--; // المخرج: 12، ثم $x يصبح 11
// نقصان سابق (طرح 1 أولاً، ثم استخدام القيمة الجديدة)
echo --$x; // المخرج: 10، $x الآن 10
// استخدام شائع في الحلقات
for ($i = 0; $i < 10; $i++) {
echo $i;
}
?>
تذكر: الزيادة اللاحقة ($x++) تستخدم القيمة أولاً، ثم تزيد. الزيادة السابقة (++$x) تزيد أولاً، ثم تستخدم القيمة الجديدة.
7. العامل الشرطي (الثلاثي)
طريقة مختصرة لكتابة عبارات if-else البسيطة:
<?php
$age = 20;
// النسخة الطويلة (if-else)
if ($age >= 18) {
$status = "بالغ";
} else {
$status = "قاصر";
}
// النسخة القصيرة (ثلاثي)
$status = ($age >= 18) ? "بالغ" : "قاصر";
// البناء: (الشرط) ? القيمةإذاصحيح : القيمةإذاخطأ
// أمثلة أكثر
$score = 85;
$grade = ($score >= 90) ? "A" : (($score >= 80) ? "B" : "C");
$isLoggedIn = true;
echo $isLoggedIn ? "مرحباً بعودتك!" : "الرجاء تسجيل الدخول";
// مع HTML
$hasAccess = true;
echo "<div class='" . ($hasAccess ? "access-granted" : "access-denied") . "'>";
?>
أفضل ممارسة: استخدم العوامل الثلاثية للشروط البسيطة. للمنطق المعقد، التزم بـ if-else التقليدي لسهولة القراءة.
8. عامل التحقق من null (??) - PHP 7+
يوفر قيمة افتراضية إذا كان المتغير null أو غير موجود:
<?php
// بدون عامل التحقق من null
if (isset($_GET['name'])) {
$name = $_GET['name'];
} else {
$name = "ضيف";
}
// مع عامل التحقق من null (أنظف)
$name = $_GET['name'] ?? "ضيف";
// سلسلة قيم متعددة
$value = $config ?? $default ?? "احتياطي";
// أمثلة عملية
$username = $_POST['username'] ?? "مجهول";
$page = $_GET['page'] ?? 1;
$color = $userPreference ?? $defaultColor ?? "blue";
// تعيين التحقق من null (PHP 7.4+)
$data['key'] ??= "قيمة افتراضية";
// نفس: $data['key'] = $data['key'] ?? "قيمة افتراضية";
?>
الفرق عن الثلاثي: ?? يتحقق مما إذا كان المتغير null أو غير معرف. العامل الثلاثي ? : يتحقق مما إذا كان الشرط true/false.
9. عوامل المصفوفات
تُستخدم لإجراء عمليات على المصفوفات:
<?php
$arr1 = ["a" => "تفاح", "b" => "موز"];
$arr2 = ["b" => "توت", "c" => "كرز"];
// الاتحاد - يدمج المصفوفات (قيم المصفوفة اليسرى لها الأولوية)
$result = $arr1 + $arr2;
// النتيجة: ["a" => "تفاح", "b" => "موز", "c" => "كرز"]
// المساواة - true إذا كانت نفس أزواج المفتاح/القيمة (أي ترتيب)
$x = ["a" => 1, "b" => 2];
$y = ["b" => 2, "a" => 1];
var_dump($x == $y); // true
// التطابق - true إذا كانت نفس أزواج المفتاح/القيمة بنفس الترتيب والنوع
var_dump($x === $y); // false (ترتيب مختلف)
// عدم المساواة
var_dump($x != $y); // false
var_dump($x <> $y); // false
// عدم التطابق
var_dump($x !== $y); // true
?>
10. عامل المركبة الفضائية (<=>) - PHP 7+
عامل المقارنة الثلاثية. يُرجع -1 أو 0 أو 1:
<?php
// يُرجع:
// -1 إذا كان اليسار أقل من اليمين
// 0 إذا كان اليسار يساوي اليمين
// 1 إذا كان اليسار أكبر من اليمين
echo 1 <=> 2; // المخرج: -1 (1 < 2)
echo 2 <=> 2; // المخرج: 0 (2 == 2)
echo 3 <=> 2; // المخرج: 1 (3 > 2)
// استخدام عملي: الفرز
$numbers = [5, 2, 8, 1, 9];
usort($numbers, function($a, $b) {
return $a <=> $b; // فرز تصاعدي
});
// النتيجة: [1, 2, 5, 8, 9]
// مقارنة النصوص
echo "apple" <=> "banana"; // المخرج: -1
echo "apple" <=> "apple"; // المخرج: 0
?>
أولوية العوامل
عندما تظهر عوامل متعددة في تعبير، تتبع PHP قواعد الأولوية:
الأولوية (من الأعلى إلى الأدنى):
1. ++ -- (الزيادة/النقصان)
2. ! (NOT المنطقي)
3. * / % (الضرب، القسمة، المودولو)
4. + - . (الجمع، الطرح، الدمج)
5. < <= > >= (المقارنة)
6. == != === !== <=> (المساواة)
7. && (AND المنطقي)
8. || (OR المنطقي)
9. ? : (الثلاثي)
10. = += -= *= /= .= (التعيين)
مثال:
<?php
$result = 10 + 5 * 2; // 20 (وليس 30)
// * لها أولوية أعلى من +
// استخدم الأقواس للتجاوز
$result = (10 + 5) * 2; // 30
?>
أفضل ممارسة: عند الشك، استخدم الأقواس لتوضيح نيتك وتجنب الخلط في الأولوية.
أمثلة عملية
<?php
// حساب الخصم
$price = 100;
$discount = 0.15;
$finalPrice = $price - ($price * $discount);
// التحقق مما إذا كان الرقم في نطاق
$age = 25;
$isValidAge = ($age >= 18 && $age <= 65);
// معالجة القيمة الافتراضية
$username = $_POST['username'] ?? null;
$displayName = $username ?? "مستخدم ضيف";
// تبديل القيمة المنطقية
$isActive = true;
$isActive = !$isActive; // الآن false
// حساب النسبة المئوية
$score = 85;
$total = 100;
$percentage = ($score / $total) * 100;
// التقريب إلى منزلتين عشريتين
$value = 19.9567;
$rounded = round($value, 2); // 19.96
// التحقق من شروط متعددة
$status = "published";
$views = 1000;
$isPopular = ($status === "published" && $views > 500);
?>
تمرين عملي:
المهمة: أنشئ آلة حاسبة بسيطة:
- خذ رقمين: $num1 = 20, $num2 = 8
- نفّذ جميع العمليات الحسابية
- تحقق مما إذا كان $num1 أكبر من $num2
- استخدم الثلاثي لعرض "زوجي" أو "فردي" لـ $num1
- احسب واعرض متوسط الرقمين
الحل:
<?php
$num1 = 20;
$num2 = 8;
// العمليات الحسابية
echo "<h3>نتائج الآلة الحاسبة</h3>";
echo "<p>الجمع: " . ($num1 + $num2) . "</p>";
echo "<p>الطرح: " . ($num1 - $num2) . "</p>";
echo "<p>الضرب: " . ($num1 * $num2) . "</p>";
echo "<p>القسمة: " . ($num1 / $num2) . "</p>";
echo "<p>المودولو: " . ($num1 % $num2) . "</p>";
// المقارنة
$isGreater = ($num1 > $num2) ? "نعم" : "لا";
echo "<p>هل $num1 أكبر من $num2؟ $isGreater</p>";
// زوجي أو فردي
$parity = ($num1 % 2 == 0) ? "زوجي" : "فردي";
echo "<p>$num1 هو $parity</p>";
// المتوسط
$average = ($num1 + $num2) / 2;
echo "<p>المتوسط: $average</p>";
?>
الملخص
في هذا الدرس، تعلمت:
- العوامل الحسابية تنفذ العمليات الحسابية (+, -, *, /, %, **)
- عوامل التعيين تعيّن وتعدّل القيم (=, +=, -=, *=, /=, .=)
- عوامل المقارنة تقارن القيم (==, ===, !=, !==, <, >, <=, >=)
- العوامل المنطقية تدمج الشروط (&&, ||, !)
- عامل النصوص يدمج النصوص (.)
- عوامل الزيادة/النقصان تعدّل القيم بمقدار 1 (++, --)
- العامل الثلاثي يوفر اختصار if-else (? :)
- عامل التحقق من null يتعامل مع القيم الفارغة (??, ??=)
- عامل المركبة الفضائية ينفذ مقارنة ثلاثية (<=>)
- أولوية العوامل تحدد ترتيب التقييم
التالي: في الدرس التالي، سنستكشف النصوص ودوال النصوص بعمق - كيفية معالجة النصوص والبحث فيها وتحويلها في PHP!