دوال المتغيرات
جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 6 من 68.
توفر الدوال المتغيرة (Variable functions) طريقة أخرى لاستدعاء الدوال ديناميكيًا في PHP. بدلاً من استخدام call_user_func()، يمكنك استدعاء دالة مباشرةً من خلال معاملة المتغير الذي يحتوي على اسم الدالة كما لو كان هو الدالة نفسها.
الصيغة بسيطة: إذا كان لديك متغير يحتوي على اسم دالة، يمكنك استدعاء تلك الدالة عن طريق إضافة أقواس إلى المتغير:
<?php
function sayHello() {
echo "Hello World!";
}
$functionName = "sayHello";
$functionName(); // المخرجات: Hello World!
?>يعمل هذا مع الدوال التي تقبل المعاملات أيضاً. ما عليك سوى تمرير الوسائط داخل الأقواس:
<?php
function greet($name) {
echo "Hello, " . $name . "!";
}
$func = "greet";
$func("Alice"); // المخرجات: Hello, Alice!
?>توفر دوال المتغيرات (Variable functions) طريقة نظيفة وبديهية لتنفيذ الكود بشكل ديناميكي. هذه الميزة مفيدة بشكل خاص عندما تحتاج إلى استدعاء دوال مختلفة بناءً على شروط أو مدخلات المستخدم، مما يجعل الكود الخاص بك أكثر مرونة وقابلية للتكيف.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلقم بإنشاء ثلاث دوال: calculateArea تأخذ رقمين (الطول والعرض) وتعيد حاصل ضربهما، و calculatePerimeter تأخذ رقمين وتعيد ضعف مجموعهما، و calculateDiagonal تأخذ رقمين وتعيد الجذر التربيعي لمجموع مربعاتهما.
ستتلقى ثلاثة مدخلات: اسم العملية ("area"، أو "perimeter"، أو "diagonal")، والطول، والعرض. اقرأ المدخلات الثلاثة، وقم بتخزين اسم الدالة في متغير، واستدعِ تلك الدالة باستخدام صيغة الدالة المتغيرة (variable function syntax) مع القياسين، واطبع النتيجة.
تنسيق الإدخال: ثلاثة أسطر - السطر الأول يحتوي على اسم العملية، والسطر الثاني يحتوي على الطول (رقم قد يحتوي على كسور عشرية)، والسطر الثالث يحتوي على العرض (رقم قد يحتوي على كسور عشرية)
المخرجات المتوقعة: نتيجة العملية الحسابية
ورقة مرجعية
تسمح لك الدوال المتغيرة (Variable functions) باستدعاء الدوال بشكل ديناميكي من خلال معاملة المتغير الذي يحتوي على اسم الدالة كأنه الدالة نفسها.
الصيغة الأساسية - أضف أقواسًا إلى متغير يحتوي على اسم دالة:
<?php
function sayHello() {
echo "Hello World!";
}
$functionName = "sayHello";
$functionName(); // المخرجات: Hello World!
?>تعمل الدوال المتغيرة مع المعاملات أيضًا:
<?php
function greet($name) {
echo "Hello, " . $name . "!";
}
$func = "greet";
$func("Alice"); // المخرجات: Hello, Alice!
?>جرّب بنفسك
<?php
// قراءة المدخلات
$operation = trim(fgets(STDIN));
$length = floatval(fgets(STDIN));
$width = floatval(fgets(STDIN));
// TODO: قم بإنشاء الدوال الثلاث هنا (calculateArea, calculatePerimeter, calculateDiagonal)
// TODO: استدعِ الدالة المناسبة باستخدام بناء جملة الدالة المتغيرة وقم بتخزين النتيجة
// إخراج النتيجة
echo $result;
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1الدوال المتقدمة
الدوال المجهولةالـ Closures وكلمة 'use'دوال السهمدوال الـ Callbackاستخدام 'call_user_func'دوال المتغيراتالتمرير بالمرجعالدوال العوديةمراجعة: مزيج الدوال4المصفوفات متعددة الأبعاد
إنشاء مصفوفة ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادتعديل عناصر المصفوفة ثنائية الأبعادالتكرار باستخدام الحلقات المتداخلةالمصفوفات الترابطية ثنائية الأبعادمراجعة: تمرين الشبكة البسيطة2معالجة المصفوفات المتقدمة
الإضافة باستخدام 'array_push'الحذف باستخدام 'array_pop'الإضافة باستخدام 'array_unshift'الحذف باستخدام 'array_shift'دمج المصفوفات المفهرسةدمج المصفوفات الترابطيةالاستخراج باستخدام 'array_slice'القيم باستخدام 'in_array'المفاتيح باستخدام 'array_search'مراجعة: تمرين قائمة التشغيل3ترتيب المصفوفات
ترتيب المصفوفات المفهرسة تصاعدياًترتيب المصفوفات المفهرسة تنازلياًترتيب المصفوفات الترابطية حسب القيمةترتيب المصفوفات الترابطية حسب المفتاحالترتيب بالترتيب الطبيعيالترتيب المخصص باستخدام 'usort'مراجعة: ترتيب لوحة المتصدرين