📌 ما هي الدالة (Function)؟
الدالة هي كتلة كود قابلة لإعادة الاستخدام تقوم بمهام محددة. بدل ما نكرر نفس الكود أكثر من مرة، بنكتبه داخل دالة ونستدعيه عند الحاجة.
✨ مفهوم DRY:
DRY = Don’t Repeat Yourself
يعني لا تكرر نفسك، وبدل التكرار، استعمل دوال.
🧱 الصيغة الأساسية:
function اسم_الدالة() {
// الكود
}
PHP✅ المثال بدون استخدام دالة (❌ تكرار الكود):
$name = "Yasin";
echo "Welcome $name<br>";
echo "We're happy to see you $name<br>";
echo "Have a nice day $name<br>";
PHP🎯 المشكلة:
كل مرة تكتب فيها رسالة فيها اسم المستخدم، تكرر نفس الكود يدويًا. ولو أردت تعديل الأسلوب لاحقًا (مثل تغيير “Welcome” إلى “Hello”)، يجب تعديل كل سطر يدويًا.
✅ نفس المثال باستخدام دالة (✅ تطبيق DRY):
function greetUser($name) {
echo "Welcome $name<br>";
echo "We're happy to see you $name<br>";
echo "Have a nice day $name<br>";
}
// استخدام الدالة:
greetUser("Yasin");
greetUser("Ali");
PHP🎯 الفوائد:
- ✔️ إعادة استخدام الكود بسهولة
- ✔️ التعديل مرة واحدة فقط داخل الدالة
- ✔️ تنظيم الكود وقراءة أسهل
- ✔️ توفير وقت وجهد كبير خصوصًا في المشاريع الكبيرة
🔔 ملاحظة:
هذا الأسلوب هو أساس بناء المواقع والأنظمة الضخمة، حيث يتم تجزئة الوظائف إلى دوال ووحدات صغيرة مستقلة.
🧪 مثال:
function sayHello() {
echo "أهلاً بك في PHP!<br>";
}
sayHello();
sayHello();
PHP📌 النتيجة:
أهلاً بك في PHP!
أهلاً بك في PHP!
PHP✅ المثال 1: دالة للجمع
function add($a, $b) {
echo "الناتج: " . ($a + $b) . "<br>";
}
add(5, 7); // الناتج: 12
PHP🧠 الشرح:
add
هي الدالة.$a
و$b
هما الـ parameters.5
و7
هما الـ arguments.
✅ المثال 2: دالة لحساب الفرق (الطرح)
function subtract($x, $y) {
echo "الفرق: " . ($x - $y) . "<br>";
}
subtract(10, 4); // الفرق: 6
PHP✅ المثال 3: دالة لحساب المساحة (مستطيل)
function area($length, $width) {
echo "المساحة: " . ($length * $width) . "<br>";
}
area(8, 3); // المساحة: 24
PHP✅ المثال 4: دالة لحساب النسبة المئوية
function percentage($total, $value) {
$percent = ($value / $total) * 100;
echo "النسبة: $percent%<br>";
}
percentage(200, 50); // النسبة: 25%
PHPParameters And Arguments
🧠 الفكرة:
يمكنك تمرير معلومات إلى الدالة لتتعامل معها بشكل ديناميكي.
🧱 الصيغة:
function sayHello($name) {
echo "أهلاً $name <br>";
}
PHP🧪 مثال:
sayHello("Yasin");
sayHello("Ali");
PHP📌 النتيجة:
أهلاً Yasin
أهلاً Ali
PHPFunction Return And Echo
✅ أولًا: الفرق الأساسي بين return
و echo
المقارنة | return | echo |
---|---|---|
وظيفته | يُرجع قيمة من الدالة للاستخدام لاحقًا | يعرض الناتج مباشرة على الشاشة |
مكان الاستخدام | داخل الدوال – لإعادة النتيجة | داخل أو خارج الدوال – للطباعة |
إمكانية إعادة استخدامها | ✅ نعم، يمكن تخزين القيمة أو معالجتها | ❌ لا، فقط طباعة |
ينهي الدالة؟ | ✅ نعم، الدالة تتوقف عند return | ❌ لا، تكمل تنفيذ باقي الأسطر |
✅ مثال 1: استخدام echo
فقط داخل الدالة
function sayHello($name) {
echo "Hello $name<br>";
}
sayHello("Yasin"); // Hello Yasin
sayHello("Ali"); // Hello Ali
PHP📌 الشرح:
- الدالة تقوم بطباعة الترحيب مباشرة على الشاشة.
- لا يمكن استخدام الناتج في عملية أخرى لأنه مجرد طباعة.
✅ مثال 2: استخدام return
فقط داخل الدالة
function getHello($name) {
return "Hello $name";
}
$message = getHello("Yasin");
echo $message; // Hello Yasin
PHP📌 الشرح:
return
أرجعت النص من الدالة.- استخدمنا القيمة لاحقًا بطباعتها أو حتى استخدامها في منطق آخر.
✅ مثال 3: الفرق في العمليات الحسابية
function addWithEcho($a, $b) {
echo $a + $b;
}
function addWithReturn($a, $b) {
return $a + $b;
}
addWithEcho(5, 3); // تطبع 8 مباشرة
echo "<br>";
$result = addWithReturn(5, 3);
echo $result * 2; // تطبع 16 (8 × 2)
PHP📌 الشرح:
addWithEcho
تطبع النتيجة ولا يمكننا استخدامها مرة أخرى.addWithReturn
ترجع القيمة، لذلك يمكننا استخدامها في حساب آخر.
✅ مثال 4: استخدام return
داخل شرط
function isEven($num) {
if ($num % 2 == 0) {
return true;
}
return false;
}
if (isEven(10)) {
echo "العدد زوجي";
} else {
echo "العدد فردي";
}
PHP📌 الشرح:
- الدالة تعيد
true
أوfalse
باستخدامreturn
. - استخدمنا النتيجة في شرط خارجي.
- لا يمكن فعل ذلك باستخدام
echo
فقط.
✅ نصائح للمبتدئين:
🔹 استخدم echo
فقط للطباعة البسيطة.
🔹 استخدم return
عندما تريد إعادة قيمة لاستخدامها لاحقًا في عمليات أو منطق.
🧠 الفرق:
echo
: تطبع النتيجة مباشرة.return
: ترجع القيمة بدون طباعة، لتستخدم لاحقًا.
🧪 مثال:
function sum($a, $b) {
return $a + $b;
}
$result = sum(5, 3);
echo "النتيجة: $result";
PHPFunction Default Parameter Value
✅ ما هو Default Parameter Value في PHP؟
هو قيمة افتراضية يتم إعطاؤها للـ parameter داخل تعريف الدالة، بحيث لو تم استدعاء الدالة بدون تمرير قيمة لذلك الوسيط، تُستخدم القيمة الافتراضية تلقائيًا.
🎯 الفائدة:
- ✅ تجعل الدوال أكثر مرونة.
- ✅ تقلل عدد الأخطاء الناتجة عن نسيان تمرير قيمة.
- ✅ تساعد في إعادة استخدام الدالة بسهولة أكثر من سيناريو.
⚠️ محاذير مهمة:
- إذا وضعت قيمة افتراضية لوسيط، يجب أن تأتي بعد الوسائط العادية. ❌ خطأ: phpCopyEdit
function greet($name = "Yasin", $age) { } // ❌
✅ صح: phpCopyEditfunction greet($name, $age = 18) { } // ✅
- لا يمكن استخدام متغير غير معرف كقيمة افتراضية (يجب أن تكون قيمة ثابتة أو معرفة سابقًا).
✨ نصائح للمبتدئين:
- استخدم القيمة الافتراضية لتقليل تكرار الدوال.
- لا تفرط باستخدام القيم الافتراضية إذا كان الوسيط مهم وأساسي.
- اجعل القيم الافتراضية منطقية (مثلاً: العمر = 18، اللغة = “ar”).
✅ 4 أمثلة على Default Parameters
✅ مثال 1: ترحيب افتراضي
function sayHello($name = "زائر") {
echo "أهلاً وسهلاً $name<br>";
}
sayHello("ياسين"); // أهلاً وسهلاً ياسين
sayHello(); // أهلاً وسهلاً زائر
PHP✅ مثال 2: حساب الضريبة
function calculateTax($amount, $tax = 0.15) {
return $amount * $tax;
}
echo calculateTax(100); // 15
echo calculateTax(100, 0.2); // 20
PHP✅ مثال 3: عرض معلومات المستخدم
function userInfo($name, $city = "غير معروف") {
echo "$name من مدينة $city<br>";
}
userInfo("علي", "دمشق");
userInfo("فاطمة");
PHP✅ مثال 4: تحديد اللغة الافتراضية
function greet($name, $lang = "ar") {
if ($lang == "en") {
echo "Hello $name<br>";
} else {
echo "مرحبا $name<br>";
}
}
greet("Yasin", "en"); // Hello Yasin
greet("Yasin"); // مرحبا Yasin
PHP🧠 المعنى:
تستطيع إعطاء قيمة افتراضية للباراميتر إذا لم يُمرر.
🧪 مثال:
function greet($name = "زائر") {
echo "مرحبًا $name <br>";
}
greet("Yasin");
greet(); // تستخدم القيمة الافتراضية
PHP📌 النتيجة:
مرحبًا Yasin
مرحبًا زائر
PHP✅ ما هو Function Variable Arguments List؟
هو إمكانية تمرير عدد غير محدود من القيم (arguments) إلى دالة واحدة، باستخدام ثلاث نقاط ...
قبل اسم المتغير.
هذه الميزة تُسمى أيضًا variadic functions.
✳️ الصيغة:
function functionName(...$args) {
// $args يكون عبارة عن مصفوفة (Array) من القيم المرسلة
}
PHP🎯 الفوائد:
- ✅ تُمكنك من إنشاء دوال مرنة تستقبل عددًا غير محدد من القيم.
- ✅ تقلل الحاجة إلى إنشاء أكثر من نسخة من الدالة لعدد مختلف من المعطيات.
- ✅ تسهل العمليات على مجموعة من البيانات مثل الجمع، الضرب، الطباعة، إلخ.
⚠️ محاذير ونصائح:
- يمكنك تمرير وسيط ثابت قبل
...$args
، لكن...
يجب أن يكون في النهاية فقط. - المتغير بعد
...
سيكون دائمًا مصفوفة تحتوي على جميع القيم المرسلة. - لا يمكن استخدام أكثر من
...
مرة واحدة في نفس الدالة.
✅ مثال 1: دالة تجمع كل الأرقام الممررة
function sumAll(...$numbers) {
$sum = 0;
foreach ($numbers as $num) {
$sum += $num;
}
echo "المجموع: $sum<br>";
}
sumAll(1, 2, 3); // المجموع: 6
sumAll(10, 20, 30, 40); // المجموع: 100
PHP✅ مثال 2: طباعة كل الأسماء المرسلة
function printNames(...$names) {
foreach ($names as $name) {
echo "مرحبًا $name<br>";
}
}
printNames("ياسين", "علي", "نور");
PHP✅ مثال 3: تحديد خصم على مجموعة أسعار
function applyDiscount($discount, ...$prices) {
foreach ($prices as $price) {
$newPrice = $price - ($price * $discount);
echo "السعر بعد الخصم: $newPrice<br>";
}
}
applyDiscount(0.1, 100, 200, 300); // خصم 10%
PHP✅ مثال 4: إيجاد أكبر رقم من قائمة أرقام
function getMax(...$numbers) {
$max = max($numbers); // دالة PHP جاهزة
echo "أكبر رقم: $max<br>";
}
getMax(5, 99, 32, 45); // أكبر رقم: 99
PHP✅ خلاصة للمبتدئ:
...$args
= اجمع كل ما يُرسل للدالة كمصفوفة.- استخدمها عندما لا تعرف مسبقًا كم عدد القيم.
- مفيدة جدًا في العمليات المتكررة أو الجماعية.
🧠 لما لا تعرف عدد البراميترز مسبقًا:
استخدم ...$args
🧪 مثال:
function printNumbers(...$nums) {
foreach ($nums as $num) {
echo "$num<br>";
}
}
printNumbers(1, 2, 3, 4, 5);
PHP✅ Function Training And Unpacking Arguments
🧠 تمرين على استخدام القوائم وتفريغها داخل الدالة.
🧪 مثال:
function calculate($a, $b, $c) {
return $a + $b + $c;
}
$data = [10, 20, 30];
echo calculate(...$data);
PHP✅ Function Variable And Function Exists
✳️ أولًا: ما هو function_exists()
؟
هي دالة في PHP تستخدم للتأكد مما إذا كانت دالة معينة موجودة ومعرّفة قبل محاولة استخدامها.
✅ الصيغة:
function_exists("functionName");
PHP🔹 تُعيد:
true
إذا كانت الدالة موجودةfalse
إذا لم تكن موجودة
✳️ ثانيًا: ما هي Variable Functions؟
هي طريقة لاستدعاء دالة باستخدام اسمها من داخل متغير.
✅ الصيغة:
$func = "sayHello";
$func(); // هذا ينفذ الدالة sayHello()
PHP🔹 بشرط أن تكون الدالة موجودة أصلًا.
🎯 الفوائد:
الفائدة | الشرح |
---|---|
✅ مرونة | يمكنك استدعاء دوال مختلفة بناءً على شرط أو اسم معين. |
✅ ديناميكية | اختيار الدالة في وقت التشغيل Run-time. |
✅ التحكم في الأخطاء | باستخدام function_exists() قبل تنفيذ دالة قد تكون غير معرفة. |
✅ مفيدة في النظم الكبيرة | مثل أنظمة الإضافات أو التحكم في صلاحيات المستخدمين. |
⚠️ المحاذير:
- لا تستخدم
variable functions
بدون التأكد أن الدالة موجودة. - تأكد من كتابة اسم الدالة الصحيح داخل المتغير.
- إذا كانت الدالة غير معرفة واستُدعيت، ستحدث Fatal Error.
✅ الأمثلة:
📘 مثال 1: التحقق من وجود دالة قبل استدعائها
function greet() {
echo "مرحبًا بك<br>";
}
if (function_exists("greet")) {
greet(); // سيتم التنفيذ
} else {
echo "الدالة غير موجودة<br>";
}
PHP📘 مثال 2: استدعاء دالة بناءً على اسم في متغير
function sayHi() {
echo "Hi there!<br>";
}
$call = "sayHi";
$call(); // تنفذ sayHi
PHP📘 مثال 3: تنفيذ دوال مختلفة حسب إدخال المستخدم
function add() {
echo "عملية جمع<br>";
}
function subtract() {
echo "عملية طرح<br>";
}
$operation = "add";
if (function_exists($operation)) {
$operation(); // تنفذ الدالة add
}
PHP📘 مثال 4: دالة غير معرفة مع الحماية
$unknown = "doSomething";
if (function_exists($unknown)) {
$unknown(); // لن تُنفذ لأنها غير موجودة
} else {
echo "⚠️ الدالة '$unknown' غير معرفة<br>";
}
PHP✅ خلاصة مبسطة للمبتدئين:
- استخدم
function_exists()
للتأكد قبل التنفيذ. - يمكن تخزين اسم الدالة في متغير وتنفيذه باستخدام
()
. - هذا يفيدك في بناء أنظمة مرنة ومتغيرة مثل لوحة تحكم أو مدير أوامر.
📌 function_exists("اسم")
: تفيدنا لمعرفة إذا كانت الدالة معرفة مسبقًا.
🧪 مثال:
if (!function_exists("sayHi")) {
function sayHi() {
echo "Hi from sayHi!";
}
}
sayHi();
PHP🟢 أولًا: Passing Arguments By Reference (التمرير بالإشارة)
✅ ما هو؟
في PHP، القيم تُمرر افتراضيًا بالنسخ (By Value)، أي يتم إنشاء نسخة من المتغير داخل الدالة.
لكن عند التمرير بالإشارة (By Reference)، فإن أي تعديل على المتغير داخل الدالة يُؤثر على القيمة الأصلية خارجها.
✅ الصيغة:
function changeValue(&$var) {
$var = "تم التعديل";
}
PHPلاحظ علامة
&
قبل اسم الوسيط — هذه تعني “مرر بالإشارة”.
🎯 الفوائد:
الفائدة | الشرح |
---|---|
✅ توفير في الذاكرة | لا يتم إنشاء نسخة إضافية. |
✅ تعديل القيمة الأصلية | مناسب إذا كنت تريد تحديث متغير من داخل الدالة مباشرة. |
✅ مفيد في التكرار أو التهيئة | لتغيير القيم الأصلية مباشرة. |
⚠️ محاذير:
- لا تمرر بالإشارة إلا إذا كنت بحاجة حقيقية لتغيير القيمة الأصلية.
- قد يؤدي إلى نتائج غير متوقعة إن لم تكن حذرًا.
📘 مثال 1: تمرير بدون إشارة (By Value)
function setName($name) {
$name = "علي";
}
$person = "ياسين";
setName($person);
echo $person; // يطبع "ياسين"
PHP📌 المتغير لم يتغير لأن النسخة تم تعديلها، وليس الأصل.
📘 مثال 2: تمرير بالإشارة (By Reference)
function setName(&$name) {
$name = "علي";
}
$person = "ياسين";
setName($person);
echo $person; // يطبع "علي"
PHP📌 القيمة الأصلية تغيرت لأننا استخدمنا &
.
📘 مثال 3: زيادة قيمة رقم
function increment(&$number) {
$number++;
}
$num = 5;
increment($num);
echo $num; // 6
PHP📘 مثال 4: تعديل عناصر مصفوفة
function makeUppercase(&$value) {
$value = strtoupper($value);
}
$names = ["yasin", "ali", "nour"];
foreach ($names as &$n) {
makeUppercase($n);
}
print_r($names);
// ["YASIN", "ALI", "NOUR"]
PHP🟢 ثانيًا: Return Type Declaration (تحديد نوع القيمة الراجعة)
✅ ما هو؟
يسمح لك PHP بتحديد نوع القيمة التي تُعيدها الدالة باستخدام :
بعد الأقواس، وذلك لضمان دقة نوع البيانات المرجعة.
✅ الصيغة:
function sum(int $a, int $b): int {
return $a + $b;
}
PHP🔸 هنا نطلب أن تُرجع الدالة عددًا صحيحًا int
.
✅ الأنواع الشائعة:
int
float
string
bool
array
object
mixed
(من PHP 8+)void
(لا تُرجع شيء)
🎯 الفوائد:
الفائدة | الشرح |
---|---|
✅ يضمن نوع النتيجة | مفيد في المشاريع الكبيرة. |
✅ يُقلل من الأخطاء | إذا رجعت نوع خطأ، يعطيك PHP تحذيرًا أو خطأ. |
✅ يحسن قراءة الكود | أنت تعرف مباشرة ما تُرجعه الدالة. |
⚠️ محاذير:
- يجب أن تُرجع الدالة فعلًا القيمة من النوع المحدد وإلا ستظهر Fatal Error.
- لا تستخدمه إذا كانت الدالة تحتوي على عدة return بأنواع مختلفة بدون
mixed
.
📘 مثال 1: دالة تُرجع عددًا صحيحًا
function multiply(int $a, int $b): int {
return $a * $b;
}
echo multiply(3, 4); // 12
PHP📘 مثال 2: دالة تُرجع نصًا
function greet(string $name): string {
return "Hello, $name";
}
echo greet("Yasin");
PHP📘 مثال 3: دالة بدون قيمة (void)
function showMessage(): void {
echo "تم تنفيذ العملية<br>";
}
showMessage();
PHP📘 مثال 4: دالة تُرجع true أو false
function isEven(int $n): bool {
return $n % 2 === 0;
}
var_dump(isEven(4)); // true
var_dump(isEven(7)); // false
PHP✅ خلاصة:
الخاصية | Passing by Reference | Return Type Declaration |
---|---|---|
تؤثر على القيم الأصلية | نعم | لا |
تستخدم في الوسائط | نعم (مع &) | لا |
تتحكم بالقيمة المرجعة | لا | نعم |
مفيدة للمبتدئين | ✅ جدًا للتعامل مع القيم | ✅ لضمان نتائج دقيقة |
🔹 ما هي الدوال المجهولة (Anonymous Functions)؟
هي دوال ليس لها اسم، وتُخزن عادةً في متغير لاستخدامها لاحقًا.
تُعرف أحيانًا أيضًا باسم Closure في PHP، وتُستخدم لتنفيذ منطق معيّن بدون الحاجة لتعريف دالة باسم دائم.
✅ الصيغة العامة:
$var = function($params) {
// كود الدالة
};
PHPيمكن استدعاؤها لاحقًا باستخدام:
$var();
✅ الفوائد:
الفائدة | الشرح |
---|---|
🔸 مرونة أكثر | تُستخدم داخل دوال أخرى أو لعمليات بسيطة لا تستحق دالة باسم. |
🔸 مناسبة للعمليات المؤقتة | مثل الفلاتر، التكرار، الترتيب، إلخ. |
🔸 تُستخدم كـ Callback | يمكن تمريرها كوسيط إلى دوال أخرى. |
🔸 دعم للمتغيرات الخارجية باستخدام use |
⚠️ المحاذير:
- يصعب تتبعها إذا زاد استخدامها بشكل عشوائي.
- لا يمكن استدعاؤها قبل تعريفها (Unlike normal functions).
- قد تكون مربكة للمبتدئين إذا أسيء استخدامها.
🎯 استخداماتها الشائعة:
- في الفلاتر (مثل
array_filter
,array_map
) - تمريرها كوسيط لدالة أخرى (Callback)
- اختصارات داخل عمليات التكرار
- التعامل مع البيانات المؤقتة
📘 المثال 1: إنشاء دالة مجهولة لطباعة رسالة
$greet = function($name) {
echo "مرحبًا يا $name<br>";
};
$greet("ياسين"); // مرحبًا يا ياسين
$greet("نور"); // مرحبًا يا نور
PHP📘 المثال 2: استخدام دالة مجهولة مع array_map
$nums = [1, 2, 3, 4];
$squared = array_map(function($n) {
return $n * $n;
}, $nums);
print_r($squared);
// [1, 4, 9, 16]
PHP📘 المثال 3: استخدام use
لإدخال متغير خارجي
$prefix = "أهلاً ";
$say = function($name) use ($prefix) {
echo $prefix . $name . "<br>";
};
$say("ياسين"); // أهلاً ياسين
PHP🔎 use
تسمح لك بإدخال متغير خارجي داخل الدالة.
📘 المثال 4: استخدام دالة مجهولة داخل دالة أخرى
function processName($name, $callback) {
echo "الاسم بعد المعالجة: ";
$callback($name);
}
processName("ياسين", function($n) {
echo strtoupper($n) . "<br>";
});
// الاسم بعد المعالجة: YASIn
PHP✅ خلاصة للمبتدئين:
الموضوع | التوضيح |
---|---|
الدالة بدون اسم؟ | نعم، تُخزن بمتغير وتُستخدم عند الحاجة |
مفيدة لـ؟ | التكرار، الفلاتر، التعامل المؤقت مع البيانات |
الصيغة؟ | $x = function($param) { ... }; |
تستخدم use ؟ | عند الحاجة لاستخدام متغيرات خارجية |
لا يمكن استدعاؤها قبل تعريفها؟ | صحيح ✅ |
🔹 ما هي الـ Arrow Function؟
هي نوع مختصر من الدوال المجهولة Anonymous Function، تم تقديمها في PHP 7.4، وتُستخدم في السطر الواحد فقط.
✳️ تُشبه دوال JavaScript في الصيغة، لكنها أخف وأبسط من الـ Closure العادية.
✅ الصيغة:
$function = fn($parameter) => التعبير;
PHP🔹 fn تعني “function”
🔹 لا تحتاج إلى return
— القيمة تُعاد تلقائيًا
🔹 تستخدم السهم =>
بدلاً من الأقواس والـ return
✅ الفوائد:
الفائدة | الشرح |
---|---|
🔸 اختصار كبير | مثالية للكود البسيط في سطر واحد. |
🔸 قراءة أوضح | خاصة في حالات التكرار أو الفلاتر. |
🔸 تدعم المتغيرات الخارجية تلقائيًا (تلقائي مثل use). | |
🔸 ممتازة كـ callback functions (مع array_map, array_filter). |
⚠️ المحاذير:
التحذير | الشرح |
---|---|
❌ لا يمكنها تنفيذ أكثر من تعبير واحد (لا تصلح لكود طويل). | |
❌ لا يمكن استخدام الأقواس أو كتل الشيفرة {} | |
❌ لا تصلح في بعض الحالات المعقدة أو التي تتطلب منطق كبير. | |
❌ لا تدعم التعليمات البرمجية الشرطية (if/else) بداخلها. |
✅ الفرق بينها وبين Anonymous Function العادية:
المقارنة | Anonymous Function | Arrow Function |
---|---|---|
الطول | أطول (تحتاج return) | أقصر |
السطر الواحد | ممكن متعددة | فقط سطر واحد |
استخدام use | مطلوب | تلقائي |
القراءة | أقل وضوح أحيانًا | أوضح وأخف |
📘 مثال 1: جمع رقمين باستخدام Arrow Function
$sum = fn($a, $b) => $a + $b;
echo $sum(3, 5); // 8
PHP📘 مثال 2: استخدام Arrow Function داخل array_map
$nums = [1, 2, 3, 4];
$squared = array_map(fn($n) => $n * $n, $nums);
print_r($squared);
// [1, 4, 9, 16]
PHP📘 مثال 3: استخدام متغير خارجي بدون use
$tax = 0.05;
$addTax = fn($price) => $price + ($price * $tax);
echo $addTax(100); // 105
PHP🔎 المتغير $tax
مستخدم بدون use
لأن الـ Arrow Functions تلتقط المتغيرات تلقائيًا.
📘 مثال 4: دالة تحقق إذا كان الرقم زوجي
$isEven = fn($n) => $n % 2 === 0;
var_dump($isEven(6)); // true
var_dump($isEven(7)); // false
PHP✅ استخداماتها الشائعة:
- array_map / array_filter / array_reduce
- دوال مؤقتة بسيطة داخل التكرار
- اختصارات للكود البسيط في سطر واحد
- منطق رياضي/شرطي بسيط
✅ نصائح للمبتدئين:
- استخدمها عندما تحتاج فقط تعبير واحد بسيط.
- تجنب استخدامها في منطق معقد أو يحتوي على أكثر من سطر.
- لا تحتاج إلى
return
— القيمة تُعاد تلقائيًا. - لا تستخدم معها
{}
أو;
داخل التعبير.