الدالة is_callable()‎ في PHP

من موسوعة حسوب
< 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()‎: التّحقّق من وجود تابعٍ ما في  صنف.

مصادر