انتقل إلى محتوى الدرس

Dynamic Calls and function_exists الدوال المتغيرة وفحص وجود الدالة بـ function_exists

استقبل عدداً مرناً من المعاملات عبر معامل التجميع (...$args)، وفكك المصفوفات عند الاستدعاء، وتحقق من وجود الدوال بـ function_exists.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

في PHP، إذا كان المتغير يحمل اسماً نصياً لدالة وأتبعته بقوسين $fn()، يقوم PHP بالبحث عن تلك الدالة وتنفيذها ديناميكياً.

  • تحقق دائماً من وجود الدالة باستخدام function_exists($fn) أو is_callable($fn) قبل استدعائها عبر $fn().
  • بنى اللغة الأساسية مثل echo وisset وempty وunset وinclude ليست دوال ولا يمكن استدعاؤها كدوال متغيرة.
  • لا تنفذ أبداً نصاً قادماً من المستخدم كدالة متغيرة مباشرة؛ بل احصر الاستدعاءات في قائمة بيضاء محددة مسبقاً.

تتحقق function_exists($operation) من توفر الدالة strtoupper قبل أن يستدعيها التعبير $operation($input) ديناميكياً.

PHP
<?php
$operation = "strtoupper";
$input     = "closetag php 8.4";

if (function_exists($operation)) {
    echo "Result: " . $operation($input) . "\n";
}
echo "mb_strlen available? " . (function_exists("mb_strlen") ? "Yes" : "No") . "\n";