Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

استخدام 'call_user_func'

جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 5 من 68.

توفر الدالة call_user_func() طريقة قوية لاستدعاء الدوال ديناميكياً في PHP. بدلاً من استدعاء دالة مباشرة باسمها، يمكنك تخزين اسم الدالة في متغير نصي واستخدام call_user_func() لتنفيذها.

إليك الصيغة الأساسية:

<?php
function greet() {
    echo "Hello World!";
}

$functionName = "greet";
call_user_func($functionName);  // المخرجات: Hello World!
?>

يصبح هذا مفيداً بشكل خاص عندما تحتاج إلى استدعاء دوال مختلفة بناءً على مدخلات المستخدم أو الشروط. يمكنك أيضاً تمرير وسائط (arguments) إلى الدالة عن طريق تضمينها كمعلمات (parameters) إضافية:

<?php
function add($a, $b) {
    return $a + $b;
}

$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result;  // المخرجات: 8
?>

يعد استدعاء الدوال الديناميكي هذا ذا قيمة خاصة عند بناء تطبيقات مرنة حيث يتم تحديد الدالة المحددة المراد تنفيذها في وقت التشغيل (runtime)، مثل الآلات الحاسبة، أو معالجات الأوامر، أو أنظمة التوجيه.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

challenge icon

التحدي

سهل

قم بإنشاء ثلاث دوال: multiply تأخذ رقمين وتعيد حاصل ضربهما، و subtract تأخذ رقمين وتعيد الفرق بينهما، و divide تأخذ رقمين وتعيد ناتج قسمتهما.

ستتلقى ثلاثة مدخلات: اسم العملية ("multiply"، أو "subtract"، أو "divide")، ورقمين. اقرأ جميع المدخلات الثلاثة، واستخدم call_user_func() لتنفيذ الدالة المناسبة مع الرقمين، واطبع النتيجة.

تنسيق المدخلات: ثلاثة أسطر - السطر الأول يحتوي على اسم العملية، والسطر الثاني يحتوي على الرقم الأول، والسطر الثالث يحتوي على الرقم الثاني

المخرجات المتوقعة: نتيجة العملية

ورقة مرجعية

تسمح لك الدالة call_user_func() باستدعاء الدوال ديناميكيًا باستخدام متغير نصي يحتوي على اسم الدالة:

<?php
function greet() {
    echo "Hello World!";
}

$functionName = "greet";
call_user_func($functionName);  // المخرجات: Hello World!
?>

يمكنك تمرير الوسائط إلى الدالة عن طريق تضمينها كمعاملات إضافية:

<?php
function add($a, $b) {
    return $a + $b;
}

$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result;  // المخرجات: 8
?>

جرّب بنفسك

<?php
// قراءة المدخلات
$operation = trim(fgets(STDIN));
$num1 = floatval(fgets(STDIN));
$num2 = floatval(fgets(STDIN));

// TODO: قم بإنشاء الدوال الثلاث (الضرب، الطرح، القسمة) هنا

// TODO: استخدم call_user_func() لتنفيذ الدالة المناسبة

// طباعة النتيجة
echo $result;
?>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow