الدالة is_callable()
في PHP
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
تتحقّق الدالة is_callable()
من القدرة على استدعاء محتوى المتغيّر كدالة.
الوصف
bool is_callable ( mixed $var [, bool $syntax_only = FALSE [, string &$callable_name ]] )
تتحقّق هذه الدالة من القدرة على استدعاء محتوى المتغيّر كدالة. يُمكِن لهذه الدالة التحقّق من احتواء متغيّر بسيط على اسم صالح لدالة ما، أو احتواء مصفوفة على كائن مُرمَّز بشكل مناسب واسم دالة ما.
المعاملات
var
القيمة المطلوب التّحقّق منها.
syntax_only
عندما تكون قيمته TRUE
تتحقّق الدالة فقط من كون الاسم دالة (function) أو تابعًا (method) ما، وسترفض فقط المتغيّرات البسيطة التي لا تكون سلاسل نصّيّة أو المصفوفة التي لا تملك بنية صالحة لاستخدامها كدالة رد نداء (callback). يُفترَض من المصفوفات الصّالحة للاستخدام أن تمتلك مُدخَلين فقط، الأول هو كائن أو سلسلة نصّيّة، والثاني سلسلة نصّيّة.
callable_name
يستقبل الاسم المُستدعى، في المثال الذي سنتحدث عنه بعد قليل الاسم المُستدعى هو "someClass::someMethod"
.
القيم المعادة
تُعيد القيمة TRUE
إن كان المتغيّر قابل للاستدعاء، و FALSE
فيما عدا ذلك.
أمثلة
المثال 1: أمثلة على الدالة is_callable()
<?php
// كيفيّة التّحقّق من متغيّر ما لنعرف إن كان بالإمكان استدعاؤه كدالة
\
// متغيّر بسيط يحوي على دالة
\
function someFunction()
{
}
$functionVariable = 'someFunction';
var_dump(is_callable($functionVariable, false, $callable_name)); // bool(true)
echo $callable_name, "\n"; // someFunction
// مصفوفة تحتوي على تابع
class someClass {
function someMethod()
{
}
}
$anObject = new someClass();
$methodVariable = array($anObject, 'someMethod');
var_dump(is_callable($methodVariable, true, $callable_name)); // bool(true)
echo $callable_name, "\n"; // someClass::someMethod
?>
المثال 2: استخدام الدالة is_callable()
مع الدوال البانية (constructors)
بدءًا من إصدار PHP 5.3.0 أصبحت الدالة is_callable()
تشير إلى الدوال البانية على أنّها غير قابلة للاستدعاء، يؤثِّر هذا على الدوال المُعرَّف بطريقة التعريف المستخدمة في PHP 5 (وهي __construct
) إضافةً إلى الدوال المُعرَّفة بطريقة تعريف الدوال البانية المستعملة في PHP 4 (أي التوابع التي تمتلك نفس اسم الصّنف)، إذ عوملت هاتان الحالتان سابقًا على أنّهما قابلتان للاستدعاء.
<?php
class Foo
{
public function __construct() {}
public function foo() {}
}
var_dump(
is_callable(array('Foo', '__construct')),
is_callable(array('Foo', 'foo'))
);
ينتج عن المثال السّابق ما يلي:
bool(false)
bool(false)
انظر أيضًا
- الدالة
function_exists()
: إعادة القيمةTRUE
إن كانت الدالة المُعطاة مُعرَّفة. - الدالة
method_exists()
: التّحقّق من وجود تابعٍ ما في صنف.