الفرق بين المراجعتين ل"PHP/is callable"

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الدالة <code>is_callable()</code>‎ في PHP}}</noinclude>')
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:الدالة <code>is_callable()</code>‎ في PHP}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:الدالة <code>is_callable()</code>‎ في PHP}}</noinclude>
 +
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
 +
 +
تتحقّق الدالة <code>is_callable()‎‎‎‎‎‎</code> من القدرة على استدعاء محتوى المتغيّر كدالة.
 +
 +
== الوصف ==
 +
<syntaxhighlight lang="php">
 +
bool is_callable ( mixed $var [, bool $syntax_only = FALSE [, string &$callable_name ]] )
 +
</syntaxhighlight>تتحقّق هذه الدالة من القدرة على استدعاء محتوى المتغيّر كدالة. يُمكِن لهذه الدالة التحقّق من احتواء متغيّر بسيط على اسم صالح لدالة ما، أو احتواء مصفوفة على كائن مُرمَّز بشكل مناسب واسم دالة ما.
 +
 +
== المعاملات ==
 +
 +
=== <code>var</code> ===
 +
القيمة المطلوب التّحقّق منها.
 +
 +
=== <code>syntax_only</code> ===
 +
عندما تكون قيمته <code>TRUE</code> تتحقّق الدالة فقط من كون الاسم دالة (function) أو تابعًا (method) ما، وسترفض فقط المتغيّرات البسيطة التي لا تكون سلاسل نصّيّة أو المصفوفة التي لا تملك بنية صالحة لاستخدامها كدالة رد نداء (callback). يُفترَض من المصفوفات الصّالحة للاستخدام أن تمتلك مُدخَلين فقط، الأول هو كائن أو سلسلة نصّيّة، والثاني سلسلة نصّيّة.
 +
 +
=== <code>callable_name</code> ===
 +
يستقبل الاسم المُستدعى، في المثال الذي سنتحدث عنه بعد قليل الاسم المُستدعى هو <code>"someClass::someMethod‎"</code>.
 +
 +
== القيم المعادة ==
 +
تُعيد القيمة <code>TRUE</code> إن كان المتغيّر قابل للاستدعاء، و <code>FALSE</code> فيما عدا ذلك.
 +
 +
== أمثلة ==
 +
المثال 1: أمثلة على الدالة <code>is_callable()</code>‎<syntaxhighlight lang="php">
 +
<?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
 +
 +
?>
 +
 +
</syntaxhighlight>المثال 2: استخدام الدالة <code>is_callable()‎</code> مع الدوال البانية (constructors)
 +
 +
بدءًا من إصدار PHP 5.3.0 أصبحت الدالة <code>is_callable()</code>‎ تشير إلى الدوال البانية على أنّها غير قابلة للاستدعاء، يؤثِّر هذا على الدوال المُعرَّف بطريقة التعريف المستخدمة في PHP 5 (وهي <code>__construct</code>) إضافةً إلى الدوال المُعرَّفة بطريقة تعريف الدوال البانية المستعملة في PHP 4 (أي التوابع التي تمتلك نفس اسم الصّنف)، إذ عوملت هاتان الحالتان سابقًا على أنّهما قابلتان للاستدعاء.<syntaxhighlight lang="php">
 +
<?php
 +
 +
class Foo
 +
{
 +
    public function __construct() {}
 +
    public function foo() {}
 +
}
 +
 +
var_dump(
 +
    is_callable(array('Foo', '__construct')),
 +
    is_callable(array('Foo', 'foo'))
 +
);
 +
</syntaxhighlight>ينتج عن المثال السّابق ما يلي:<syntaxhighlight lang="text">
 +
bool(false)
 +
bool(false)
 +
</syntaxhighlight>
 +
 +
== انظر أيضًا ==
 +
* الدالة [[PHP/function exists|function_exists()]]‎: إعادة القيمة <code>TRUE</code> إن كانت الدالة المُعطاة مُعرَّفة.
 +
* الدالة [[PHP/method exists|method_exists()]]‎: التّحقّق من وجود تابعٍ ما في  صنف.
 +
 +
== مصادر ==
 +
* [http://php.net/manual/en/function.is-callable.php صفحة الدالة is_callable في توثيق PHP الرسمي].

مراجعة 22:15، 17 أبريل 2018

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

مصادر