is_callable
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
is_callable — Prüft, ob ein Wert als Funktion aus dem aktuellen Bereich aufgerufen werden kann.
Beschreibung
Prüft, ob ein Wert ein callable ist.
Parameter-Liste
-
value
-
Der zu prüfende Wert.
-
syntax_only
-
Wenn dieser Parameter auf
true
gesetzt wird, prüft die Funktion nur, obvalue
eine Funktion oder Methode enthalten könnte. Nur einfache Variablen, die keinen String enthalten, werden zurückgewiesen, oder Arrays, die nicht die richtige Struktur haben, um als Callback verwendet werden zu können. Gültige Arrays müssen zwei Elemente haben, 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.
Rückgabewerte
Gibt true
zurück, wenn value
aufrufbar ist, sonst
false
.
Beispiele
Beispiel #1 is_callable()-Beispiel
<?php
// Wie man prüft, ob eine Variable als Funktion aufgerufen werden kann
//
// Eine 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
//
// Ein 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() und Konstruktoren
is_callable() meldet Konstruktoren als nicht aufrufbar.
<?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)
Anmerkungen
- Ein Objekt ist immer aufrufbar, wenn es __invoke() implementiert und diese Methode im aktuellen Bereich sichtbar ist.
- Ein Klassenname ist aufrufbar, wenn er __callStatic() implementiert.
-
Wenn ein Objekt __call() implementiert,
dann wird diese Funktion für jede Methode dieses Objekts
true
zurückgeben, auch wenn die Methode nicht definiert ist. - Diese Funktion kann Autoloading auslösen, wenn sie mit dem Namen einer Klasse aufgerufen wird.
Siehe auch
- function_exists() - Falls die angegebene Funktion definiert ist, wird true zurück gegeben
- method_exists() - Prüft ob eine Methode innerhalb eines Objekts existiert