
المنطق والبيانات في PHP
بعد تعلم أساسيات PHP الأولى مثل بناء الجملة والمتغيرات وأنواع البيانات والسلاسل والأرقام والتمثيل والرياضيات والثوابت، فإن الخطوة التالية هي فهم كيفية تحكم PHP في المنطق وتنظيم التعليمات البرمجية.
تشرح هذه المقالة موضوعات PHP المهمة بما في ذلك عوامل التشغيل، if else وشروط elseif، وعبارات switch، وتعبيرات match، والحلقات، والوظائف، والمصفوفات، والكائنات العالمية الفائقة، والتعبيرات العادية، ودوال PHP RegEx.
تعتبر هذه المواضيع ضرورية لأنها تسمح للمطورين باتخاذ القرارات، وتكرار المهام، وإعادة استخدام التعليمات البرمجية، وتخزين مجموعات من البيانات، والتعامل مع مدخلات المستخدم، والتحقق من صحة أنماط النص في تطبيقات الويب الحقيقية.
PHP المشغلين
العوامل هي رموز تستخدم لإجراء العمليات على القيم والمتغيرات. يوفر PHP عدة أنواع من عوامل التشغيل للحسابات والمقارنات والتخصيصات والمنطق والسلاسل والمصفوفات.
يتم استخدام العوامل الحسابية لإجراء العمليات الحسابية.
<?php
$a = 10;
$b = 3;
echo $a + $b; // Addition
echo $a - $b; // Subtraction
echo $a * $b; // Multiplication
echo $a / $b; // Division
echo $a % $b; // Modulus
?>يتم استخدام عوامل التعيين لتعيين القيم أو تحديثها.
<?php
$total = 100;
$total += 50; // Same as: $total = $total + 50
$total -= 20; // Same as: $total = $total - 20
echo $total;
?>يتم استخدام عوامل المقارنة لمقارنة قيمتين. عادةً ما يُرجعون نتيجة منطقية: حقيقي أو خطأ شنيع.
<?php
$age = 20;
var_dump($age == 20); // Equal
var_dump($age === 20); // Identical: same value and same type
var_dump($age != 18); // Not equal
var_dump($age > 18); // Greater than
var_dump($age < 30); // Less than
?>يتم استخدام العوامل المنطقية للجمع بين الشروط.
<?php
$isLoggedIn = true;
$isAdmin = false;
if ($isLoggedIn && $isAdmin) {
echo "Admin area";
}
if ($isLoggedIn || $isAdmin) {
echo "Access may be allowed";
}
?>يتم استخدام عوامل السلسلة لدمج النص. عامل النقطة . يستخدم لتسلسل السلسلة.
<?php
$firstName = "Adnan";
$lastName = "Mehrat";
echo $firstName . " " . $lastName;
?>يتم استخدام عوامل التشغيل في كل مكان تقريبًا في PHP، خاصة في العمليات الحسابية والشروط والتحقق من الصحة والحلقات وإنشاء الصفحات الديناميكية.
PHP إذا...إلا...السيف
ال لو, آخر، و elseif تُستخدم البيانات لاتخاذ القرارات في PHP. أنها تسمح للبرنامج بتشغيل تعليمات برمجية مختلفة اعتمادًا على الظروف المختلفة.
يبدأ الهيكل الأساسي بـ لو. إذا كان الشرط صحيحًا، فسيتم تشغيل الكود الموجود داخل الكتلة.
<?php
$age = 18;
if ($age >= 18) {
echo "You are an adult.";
}
?>ال آخر يتم تشغيل الكتلة عندما يكون الشرط خاطئًا.
<?php
$age = 16;
if ($age >= 18) {
echo "You are an adult.";
} else {
echo "You are under 18.";
}
?>ال elseif يتم استخدام الكتلة عندما يكون هناك العديد من الشروط المحتملة.
<?php
$score = 75;
if ($score >= 90) {
echo "Excellent";
} elseif ($score >= 70) {
echo "Good";
} elseif ($score >= 50) {
echo "Passed";
} else {
echo "Failed";
}
?>الشروط شائعة جدًا في مشاريع PHP الحقيقية. ويمكن استخدامها للتحقق من حالة تسجيل الدخول، والتحقق من صحة إدخال النموذج، وإظهار رسائل مختلفة، وأذونات التحكم، والتعامل مع منطق التطبيق.
PHP التبديل
ال switch البيان هو طريقة أخرى للتعامل مع القيم المحتملة المتعددة. يكون ذلك مفيدًا عندما يكون لمتغير واحد عدة قيم معروفة.
بدلاً من كتابة العديد من عبارات elseif، يمكن لـ switch أن يجعل التعليمات البرمجية أكثر وضوحًا في بعض الحالات.
<?php
$role = "editor";
switch ($role) {
case "admin":
echo "Full access";
break;
case "editor":
echo "Can edit content";
break;
case "user":
echo "User dashboard";
break;
default:
echo "Unknown role";
}
?>ال استراحة الكلمة الأساسية مهمة لأنها تمنع PHP من الاستمرار في الحالة التالية بعد العثور على match.
ال تقصير يتم تشغيل الكتلة عندما لا تكون أي من الحالات match. إنه مشابه للآخر النهائي في عبارة if.
يُستخدم التبديل غالبًا لقيم الحالة والأدوار والخيارات المحددة وإجراءات الصفحة والمنطق البسيط الذي يشبه التوجيه.
PHP مطابقة
ال match التعبير عبارة عن ميزة PHP حديثة يمكن استخدامها كبديل أنظف لـ switch في العديد من المواقف.
على عكس switch، يقوم match بإرجاع قيمة مباشرة. ويستخدم أيضًا مقارنة صارمة، مما يعني أن القيمة والنوع يجب أن يكون match.
<?php
$status = 200;
$message = match ($status) {
200 => "Success",
404 => "Not Found",
500 => "Server Error",
default => "Unknown Status",
};
echo $message;
?>تكون المطابقة مفيدة عندما تريد تعيين قيمة بناءً على قيمة أخرى. غالبًا ما ينتج كودًا أقصر وأنظف من switch.
ميزة أخرى هي أن match لا يحتاج إلى عبارات فاصلة لأنه يُرجع النتيجة المطابقة مباشرةً.
<?php
$userType = "premium";
$discount = match ($userType) {
"free" => 0,
"standard" => 10,
"premium" => 25,
default => 0,
};
echo $discount;
?>يتم استخدام المطابقة بشكل شائع في تطبيقات PHP الحديثة عند تعيين الحالات وأدوار المستخدم والأنواع والتسميات وقيم التكوين والاستجابات.
PHP الحلقات
تُستخدم الحلقات لتكرار الكود عدة مرات. وهي مفيدة عند العمل مع القوائم أو المصفوفات أو العدادات أو عناصر HTML المتكررة أو سجلات قاعدة البيانات أو أي مهمة تحتاج إلى التكرار.
PHP يدعم العديد من أنواع الحلقات، بما في ذلك ل, بينما, افعل بينما، و foreach.
ال ل يتم استخدام الحلقة بشكل شائع عندما تعرف عدد المرات التي يجب تشغيل الحلقة فيها.
<?php
for ($i = 1; $i <= 5; $i++) {
echo "Number: " . $i;
}
?>ال بينما تعمل الحلقة طالما ظل الشرط صحيحًا.
<?php
$count = 1;
while ($count <= 5) {
echo $count;
$count++;
}
?>ال افعل بينما يتم تشغيل الحلقة مرة واحدة على الأقل، حتى لو كان الشرط خاطئًا، لأنه يتم التحقق من الشرط بعد التنفيذ الأول.
<?php
$count = 1;
do {
echo $count;
$count++;
} while ($count <= 5);
?>ال foreach تعد الحلقة مهمة بشكل خاص في PHP لأنها تُستخدم للتكرار عبر المصفوفات.
<?php
$languages = ["PHP", "JavaScript", "Python"];
foreach ($languages as $language) {
echo $language;
}
?>يتم استخدام الحلقات بكثرة في المشاريع الحقيقية. على سبيل المثال، قد تستخدم صفحة المدونة حلقة لعرض المقالات، وقد تستخدم لوحة الإدارة حلقة لعرض المستخدمين، وقد تستخدم صفحة التجارة الإلكترونية حلقة لعرض المنتجات.
PHP الوظائف
الوظائف عبارة عن كتل من التعليمات البرمجية قابلة لإعادة الاستخدام. بدلاً من كتابة نفس المنطق عدة مرات، يمكنك كتابته مرة واحدة داخل دالة واستدعائه عند الحاجة.
عادةً ما تحتوي الدالة على اسم ومعلمات اختيارية وقيمة إرجاع اختيارية.
<?php
function sayHello() {
echo "Hello, PHP!";
}
sayHello();
?>يمكن للوظائف تلقي المعلمات. تسمح لك المعلمات بتمرير البيانات إلى الوظيفة.
<?php
function greetUser($name) {
echo "Hello, " . $name;
}
greetUser("Adnan");
?>يمكن للوظائف أيضًا إرجاع القيم. يكون إرجاع القيمة مفيدًا عندما تريد أن تقوم الدالة بحساب شيء ما أو تحضيره وإرجاع النتيجة.
<?php
function calculateTotal($price, $quantity) {
return $price * $quantity;
}
$total = calculateTotal(25, 3);
echo $total;
?>تساعد الوظائف في جعل التعليمات البرمجية أكثر وضوحًا، وأسهل في الاختبار، وأسهل في الصيانة. في المشاريع الأكبر، غالبًا ما يتم استبدال الوظائف أو تنظيمها داخل الفئات والأساليب، لكن الفكرة الأساسية تظل مهمة.
PHP المصفوفات
تستخدم المصفوفات لتخزين قيم متعددة في متغير واحد. بدلاً من إنشاء العديد من المتغيرات المنفصلة، يمكن للمصفوفة أن تحتوي على مجموعة من البيانات ذات الصلة.
PHP يدعم المصفوفات المفهرسة والمصفوفات الترابطية والمصفوفات متعددة الأبعاد.
يستخدم المصفوفة المفهرسة فهارس رقمية.
<?php
$skills = ["PHP", "Laravel", "MySQL"];
echo $skills[0]; // PHP
echo $skills[1]; // Laravel
?>يستخدم المصفوفة الترابطية المفاتيح المسماة بدلاً من الفهارس الرقمية.
<?php
$user = [
"name" => "Adnan",
"role" => "Developer",
"country" => "Turkey"
];
echo $user["name"];
echo $user["role"];
?>تحتوي المصفوفة متعددة الأبعاد على مصفوفات داخل مصفوفة أخرى.
<?php
$users = [
[
"name" => "Adnan",
"role" => "Admin"
],
[
"name" => "Noor",
"role" => "User"
]
];
echo $users[0]["name"];
?>المصفوفات مهمة للغاية في PHP. يتم استخدامها للتعامل مع بيانات النموذج واستجابات API وقيم التكوين ونتائج قاعدة البيانات والقوائم والفئات والأذونات والعديد من الهياكل الأخرى.
PHP سوبرجلوبالز
Superglobals عبارة عن متغيرات PHP مضمنة ومتوفرة دائمًا في جميع النطاقات. إنها تسمح للمطورين بالوصول إلى بيانات الطلب وإدخال النموذج ومعلومات الخادم والجلسات وملفات تعريف الارتباط والملفات وقيم البيئة.
تتضمن الكائنات العالمية الفائقة الشائعة PHP ما يلي:
$_GET: يحتوي على البيانات المرسلة عبر سلسلة الاستعلام URL.
$_POST: يحتوي على بيانات مرسلة من خلال طلب HTTP POST، عادةً من النماذج.
$_REQUEST: قد تحتوي على بيانات من GET وPOST وCOOKIE حسب التكوين.
$_SERVER: يحتوي على معلومات الخادم والطلب.
$_SESSION: يخزن بيانات الجلسة للمستخدم الحالي.
$_COOKIE: يحتوي على قيم ملفات تعريف الارتباط التي يرسلها المتصفح.
$_FILES: يحتوي على معلومات الملف الذي تم تحميله.
$_ENV: يحتوي على متغيرات البيئة.
$GLOBALS: يحتوي على إشارات إلى المتغيرات العالمية.
على سبيل المثال، $_GET يمكن قراءة القيم من URL.
<?php
// Example URL: page.php?name=Adnan
$name = $_GET["name"];
echo $name;
?>ال $_POST يتم استخدام superglobal بشكل شائع مع النماذج.
<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$email = $_POST["email"];
echo $email;
}
?>إن Superglobals قوية، ولكن يجب استخدامها بعناية. يجب دائمًا التحقق من صحة البيانات الواردة من المستخدمين وتطهيرها قبل تخزينها أو عرضها أو استخدامها في استعلامات قاعدة البيانات.
PHP RegEx
RegEx، اختصار للتعبير العادي، هو نظام مطابقة الأنماط يستخدم للبحث عن النص والتحقق من صحته ومعالجته.
تكون التعبيرات العادية مفيدة عندما تحتاج إلى التحقق مما إذا كان النص يتبع تنسيقًا معينًا. على سبيل المثال، يمكنك استخدام RegEx للتحقق من صحة رسالة بريد إلكتروني، أو التحقق من رقم هاتف، أو البحث عن كلمات، أو استخراج أجزاء من سلسلة.
قد يبدو نمط التعبير العادي البسيط كما يلي:
/php/iفي هذا النمط، PHP هو النص الذي نبحث عنه، و أنا يعني بحث حساس لحالة الأحرف. هذا يعني أنه يمكن match PHP أو php أو Php أو pHp.
مثال آخر يمكنه التحقق مما إذا كانت السلسلة تحتوي على أرقام فقط.
/^[0-9]+$/هذا النمط يعني:
^ يمثل بداية السلسلة.
[0-9] يعني أي رقم من 0 إلى 9.
+ تعني حرفًا واحدًا أو أكثر.
$ يمثل نهاية السلسلة.
RegEx مفيد جدًا، ولكن قد يصبح من الصعب قراءته عندما تصبح الأنماط معقدة. لهذا السبب، يجب على المطورين الحفاظ على الأنماط واضحة واختبارها بعناية.
PHP RegEx الوظائف
يوفر PHP وظائف مدمجة للتعامل مع التعبيرات العادية. الوظائف الأكثر شيوعا هي preg_match(), preg_match_all(), preg_replace(), preg_split()، و preg_grep().
ال preg_match() تتحقق الوظيفة من وجود نمط في السلسلة.
<?php
$text = "Learning PHP is useful.";
if (preg_match("/php/i", $text)) {
echo "The word PHP was found.";
}
?>ال preg_match_all() تبحث الوظيفة عن جميع مطابقات النمط.
<?php
$text = "PHP and JavaScript are popular. PHP is used for backend.";
preg_match_all("/php/i", $text, $matches);
print_r($matches);
?>ال preg_replace() تستبدل الوظيفة النص الذي يطابق النمط.
<?php
$text = "I like Java.";
$result = preg_replace("/Java/", "PHP", $text);
echo $result;
?>ال preg_split() تقوم الدالة بتقسيم سلسلة باستخدام نمط التعبير العادي.
<?php
$text = "PHP, Laravel; Symfony Node.js";
$items = preg_split("/[,; ]+/", $text);
print_r($items);
?>ال preg_grep() تقوم الدالة بتصفية قيم المصفوفة التي match نمط.
<?php
$emails = [
"admin@example.com",
"wrong-email",
"user@test.com"
];
$validEmails = preg_grep("/^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$/", $emails);
print_r($validEmails);
?>يتم استخدام وظائف RegEx بشكل شائع في التحقق من صحة النموذج، وميزات البحث، والتصفية، وتنظيف النص، والتوجيه، وتحليل السجل، واستخراج البيانات.
كيف تعمل هذه المفاهيم PHP معًا
في تطبيقات PHP الحقيقية، عادةً ما يتم استخدام هذه المفاهيم معًا. تقارن عوامل التشغيل القيم، وتقرر الشروط ما يجب أن يحدث، وتكرر المهام، وتنظم الوظائف المنطق القابل لإعادة الاستخدام، وتخزن المصفوفات البيانات، وتتلقى الكائنات العالمية الفائقة المدخلات، ويقوم RegEx بالتحقق من صحة النص.
على سبيل المثال، قد يستخدم نموذج الاتصال $_POST لتلقي المدخلات، RegEx للتحقق من صحة تنسيق البريد الإلكتروني، وشروط التحقق من الأخطاء، والمصفوفات لتخزين رسائل التحقق من الصحة، والوظائف لتنظيم منطق التحقق من الصحة.
<?php
function isValidEmail($email) {
return preg_match("/^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$/", $email);
}
$errors = [];
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$email = $_POST["email"] ?? "";
if (!isValidEmail($email)) {
$errors[] = "Invalid email address.";
}
if (count($errors) === 0) {
echo "Form submitted successfully.";
} else {
foreach ($errors as $error) {
echo $error;
}
}
}
?>يجمع هذا المثال بين الدوال والمصفوفات والكتل الفائقة والمشغلين والشروط والحلقات وRegEx في بنية عملية واحدة.
خاتمة
عوامل تشغيل PHP، والشروط، وswitch، وmatch، والحلقات، والوظائف، والمصفوفات، والدالات الفائقة، وRegEx، وRegEx هي مفاهيم أساسية يجب على كل مبتدئ في PHP أن يفهمها.
تساعد هذه المواضيع المطورين على كتابة تعليمات برمجية ديناميكية ومنظمة. يتم استخدامها في كل مشروع PHP حقيقي تقريبًا، بدءًا من مواقع الويب البسيطة وحتى التطبيقات الخلفية الكبيرة.
بعد فهم هذه المفاهيم، فإن الخطوة التالية هي التدريب على النماذج، والتحقق من الصحة، ومعالجة الملفات، واتصالات قاعدة البيانات، والجلسات، والبرمجة الموجهة للكائنات، وأطر العمل مثل Laravel.

