(PHP 4 >= 4.0.6, PHP 5, PHP 7)
is_callable — Prüft ob der Inhalt einer Variable als Funktion aufgerufen werden kann
Prüft ob der Inhalt einer Variable als Funktion aufgerufen werden kann. Es wird geprüft, ob eine einfache Variable den Namen einer gültigen Funktion enthält, oder ob in einem Array ein gültig kodierter Objekt- und Funktionsname enthalten ist.
var
Der zu prüfende Wert.
syntax_only
Wenn dieser Parameter auf TRUE
gesetzt wird, so prüft die
Funktion nur ob var
möglicherweise eine
Funktion oder Methode enthält. Einfache Variablen werden nur
zurückgewiesen, wenn sie keinen String enthalten. Arrays werden
auf die richtige Struktur geprüft, d.g. dass das Array zwei
Elemente hat von denen der erste ein Objekt oder String und
der zweite ein String ist.
callable_name
Hier wird der "aufrufbare Name" abgelegt. Für das Beispiel weiter unten ist dies "someClass::someMethod". Es ist zu beachten, dass dies keine statische Methode ist, auch wenn die Syntax das nahelegt.
Liefet TRUE
, wenn var
aufrufbar ist,
sonst FALSE
.
Beispiel #1 is_callable() Beispiel
<?php
// Wie man prüft ob eine Variable als Funktion aufgerufen werden kann
//
// Einfache Variable die eine Funktion enthält
//
function someFunction()
{
}
$functionVariable = 'someFunction';
var_dump(is_callable($functionVariable, false, $callable_name)); // bool(true)
echo $callable_name, "\n"; // someFunction
//
// Array das eine Methode enthält
//
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
?>
Beispiel #2 is_callable() and constructors
Von PHP 5.3.0 an meldet is_callable() Konstruktoren als nicht aufrufbar. Dies betrifft Konstruktoren im PHP 5 Stil (__construct) wie auch Konstruktoren im PHP 4 Stil (d.h. Methoden mit demselben Namen wie die Klasse). Zuvor wurden beide Fälle als aufrufbar angesehen.
<?php
class Foo
{
public function __construct() {}
public function foo() {}
}
var_dump(
is_callable(array('Foo', '__construct')),
is_callable(array('Foo', 'foo'))
);
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
bool(false) bool(false)