


Entdecken Sie die Funktionen is_callable() und method_exists() in PHP
In vielen Produktanwendungen können wir häufig die folgende Verwendung sehen, mit der überprüft wird, ob eine Methode in einem Objekt vorhanden ist.
<?php if (method_exists($object, 'SomeMethod')) { $object->SomeMethod($this, TRUE); } ?>
Der Zweck dieses Codes ist relativ einfach zu verstehen. Es gibt ein Objekt namens $object. Wir möchten wissen, ob es eine Methode namens SomeMethod hat.
Dieser Code sieht korrekt aus und wird die meiste Zeit einwandfrei funktionieren. Aber wenn die Methode dieses $object-Objekts für die aktuelle Ausführungsumgebung unsichtbar ist, kann das Programm dann trotzdem normal ausgeführt werden? So wie diese Funktionsnamensmethode existiert, prüft sie lediglich, ob die von uns bereitgestellte Klasse oder das Objekt über die von uns erwartete Methode verfügt. Wenn nicht, wird das Problem der Sichtbarkeit hier nicht berücksichtigt. Wenn Sie also zufällig eine private oder geschützte Methode bestimmen, erhalten Sie möglicherweise eine korrekte Rückgabe, bei der Ausführung erhalten Sie jedoch eine Fehlermeldung „Schwerwiegender Fehler“.
Die eigentliche Absicht des obigen Codes sollte wie folgt verstanden werden: Können wir für die bereitgestellte Klasse oder das bereitgestellte Objekt die SomeMethod-Methode im aktuellen Bereich aufrufen? Und genau das ist der Zweck der is_callable()
-Funktion. is_callable()
Die Funktion erhält einen Callback-Parameter, der einen Funktionsnamen oder ein Array mit dem Methodennamen und dem Objekt angeben kann. Wenn sie im aktuellen Bereich ausgeführt werden kann, gibt sie TRUE zurück.
<?php if (is_callable(array($object, 'SomeMethod'))) { $object->SomeMethod($this, TRUE); } ?>
Lassen Sie uns ein Beispiel geben, um den Unterschied zwischen den beiden zu veranschaulichen.
<?phpclass Foo { public function PublicMethod(){} private function PrivateMethod(){} public static function PublicStaticMethod(){} private static function PrivateStaticMethod(){} } $foo = new Foo();$callbacks = array( array($foo, 'PublicMethod'), array($foo, 'PrivateMethod'), array($foo, 'PublicStaticMethod'), array($foo, 'PrivateStaticMethod'), array('Foo', 'PublicMethod'), array('Foo', 'PrivateMethod'), array('Foo', 'PublicStaticMethod'), array('Foo', 'PrivateStaticMethod'), ); foreach ($callbacks as $callback){ var_dump($callback); var_dump(method_exists($callback[0], $callback[1])); var_dump(is_callable($callback)); echo str_repeat('-', 10); echo '<br />'; }
Nachdem wir das obige Skript ausgeführt haben, werden wir den Unterschied zwischen den beiden Funktionen deutlich erkennen.
is_callable()
Es gibt andere Verwendungsmöglichkeiten, zum Beispiel nicht die bereitgestellte Klasse oder Methode zu überprüfen, sondern nur zu überprüfen, ob die Syntax der Funktion oder Methode korrekt ist. Wie method_exists()
kann is_callable()
das automatische Laden von Klassen auslösen.
Wenn ein Objekt eine magische Methode __call
hat, gibt method_exists()
FALSE und is_callable()
TRUE zurück, wenn die Methode beurteilt wird.
<?phpclass MethodTest { public function __call($name, $arguments){ echo 'Calling object method ' . $name . ' ' .implode(', ', $arguments); echo '<br />'; } }$obj = new MethodTest();$obj->runtest('in object context'); var_dump(method_exists($obj,'runtest')); var_dump(is_callable(array($obj,'runtest'))); echo '<br />';
Ergebnisse ausführen
Objektmethoden-Runtest im Objektkontext aufrufen
bool(false) bool(true)
In vielen Produktanwendungen sehen wir häufig die folgende Verwendung, mit der überprüft wird, ob eine Methode in einem Objekt vorhanden ist.
<?phpif (method_exists($object, 'SomeMethod')) { $object->SomeMethod($this, TRUE); }?>
Der Zweck dieses Codes ist relativ einfach zu verstehen. Es gibt ein Objekt namens $object. Wir möchten wissen, ob es eine Methode namens SomeMethod hat.
Dieser Code sieht korrekt aus und wird die meiste Zeit einwandfrei funktionieren. Aber wenn die Methode dieses $object-Objekts für die aktuelle Ausführungsumgebung unsichtbar ist, kann das Programm dann trotzdem normal ausgeführt werden? So wie diese Funktionsnamensmethode existiert, prüft sie lediglich, ob die von uns bereitgestellte Klasse oder das Objekt über die von uns erwartete Methode verfügt. Wenn nicht, wird das Problem der Sichtbarkeit hier nicht berücksichtigt. Wenn Sie also zufällig eine private oder geschützte Methode bestimmen, erhalten Sie möglicherweise eine korrekte Rückgabe, bei der Ausführung erhalten Sie jedoch eine Fehlermeldung „Schwerwiegender Fehler“.
Die eigentliche Absicht des obigen Codes sollte wie folgt verstanden werden: Können wir für die bereitgestellte Klasse oder das bereitgestellte Objekt die SomeMethod-Methode im aktuellen Bereich aufrufen? Und genau das ist der Zweck der is_callable()
-Funktion. is_callable()
Die Funktion erhält einen Callback-Parameter, der einen Funktionsnamen oder ein Array mit dem Methodennamen und dem Objekt angeben kann. Wenn sie im aktuellen Bereich ausgeführt werden kann, gibt sie TRUE zurück.
<?php if (is_callable(array($object, 'SomeMethod'))) { $object->SomeMethod($this, TRUE); } ?>
Lassen Sie uns ein Beispiel geben, um den Unterschied zwischen den beiden zu veranschaulichen.
<?php class Foo { public function PublicMethod(){} private function PrivateMethod(){} public static function PublicStaticMethod(){} private static function PrivateStaticMethod(){} } $foo = new Foo();$callbacks = array( array($foo, 'PublicMethod'), array($foo, 'PrivateMethod'), array($foo, 'PublicStaticMethod'), array($foo, 'PrivateStaticMethod'), array('Foo', 'PublicMethod'), array('Foo', 'PrivateMethod'), array('Foo', 'PublicStaticMethod'), array('Foo', 'PrivateStaticMethod'), ); foreach ($callbacks as $callback){ var_dump($callback); var_dump(method_exists($callback[0], $callback[1])); var_dump(is_callable($callback)); echo str_repeat('-', 10); echo '<br />'; }
Nachdem wir das obige Skript ausgeführt haben, werden wir den Unterschied zwischen den beiden Funktionen deutlich erkennen.
is_callable()
Es gibt andere Verwendungsmöglichkeiten, zum Beispiel nicht die bereitgestellte Klasse oder Methode zu überprüfen, sondern nur zu überprüfen, ob die Syntax der Funktion oder Methode korrekt ist. Wie method_exists()
kann is_callable()
das automatische Laden von Klassen auslösen.
Wenn ein Objekt eine magische Methode __call
hat, gibt method_exists()
FALSE und is_callable()
TRUE zurück, wenn die Methode beurteilt wird.
<?phpclass MethodTest { public function __call($name, $arguments){ echo 'Calling object method ' . $name . ' ' .implode(', ', $arguments); echo '<br />'; } } $obj = new MethodTest();$obj->runtest('in object context'); var_dump(method_exists($obj,'runtest')); var_dump(is_callable(array($obj,'runtest'))); echo '<br />';
Ergebnisse ausführen
Objektmethoden-Runtest im Objektkontext aufrufen
bool(false) bool(true)
Das obige ist der detaillierte Inhalt vonEntdecken Sie die Funktionen is_callable() und method_exists() in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Wenn Sie PHP für die Entwicklung von Webanwendungen verwenden, müssen Sie häufig eine Datenbank verwenden. Bei der Verwendung einer Datenbank kommt es sehr häufig zu Fehlermeldungen. Unter diesen ist PHPFatalerror: Calltoamemberfunctionfetch() ein relativ häufiger Fehler, der auftritt, wenn PDO zum Abfragen der Datenbank verwendet wird. Was verursacht diesen Fehler und wie kann er behoben werden? In diesem Artikel wird es Ihnen ausführlich erklärt. 1. Fehlerursache

1. Grundfunktionen 1. Es beginnt mit einer optimistischen Sperre und wird bei häufigen Sperrkonflikten in eine pessimistische Sperre umgewandelt wird in eine Schwergewichtssperre umgewandelt. 3. Die Spin-Lock-Strategie, die am wahrscheinlichsten bei der Implementierung von Leichtgewichtssperren verwendet wird. 4. Es handelt sich um eine unfaire Sperre. 5. Es handelt sich um eine Wiedereintrittssperre. 6. Es handelt sich nicht um eine Lese-/Schreibsperre. 2. Die JVM Synchronisiert den Sperrvorgang. Sperren werden in die Zustände „keine Sperre“, „voreingenommene Sperre“, „leichte Sperre“ und „schwere Sperre“ unterteilt. Es wird je nach Situation nacheinander aktualisiert. Bei der voreingenommenen Sperre wird davon ausgegangen, dass der männliche Protagonist eine Sperre und die weibliche Protagonistin ein Thread ist. Wenn nur dieser Thread diese Sperre verwendet, können der männliche Protagonist und die weibliche Protagonistin für immer glücklich leben, auch wenn sie keine Heiratsurkunde erhalten (um hohe Werte zu vermeiden). -Kostenoperationen). Aber die weibliche Nebenrolle erscheint

So verwenden Sie die Funktion „File.Exists“ in C#, um festzustellen, ob eine Datei vorhanden ist. Bei C#-Dateioperationen ist die Feststellung, ob eine Datei vorhanden ist, eine grundlegende Funktionsanforderung. Die File.Exists-Funktion ist eine Methode in C#, mit der ermittelt wird, ob eine Datei vorhanden ist. In diesem Artikel wird erläutert, wie Sie die Funktion „File.Exists“ in C# verwenden, um festzustellen, ob eine Datei vorhanden ist, und es werden spezifische Codebeispiele bereitgestellt. Referenzieren Sie den Namespace. Bevor Sie mit dem Schreiben von Code beginnen, müssen Sie zunächst auf den System.IO-Namespace verweisen

So verwenden Sie die POST-Anforderungsmethode in jQuery. Bei der Webentwicklung ist häufig die Dateninteraktion zwischen der Front-End-Seite und dem Back-End-Server beteiligt. Unter diesen ist die POST-Anfrage eine häufig verwendete Methode. Über die POST-Anfrage können Sie Daten an den Backend-Server senden und das entsprechende Rückgabeergebnis erhalten. jQuery ist eine beliebte JavaScript-Bibliothek, die eine bequeme Möglichkeit bietet, AJAX-Anfragen zu stellen. In diesem Artikel wird die Verwendung der POST-Methode in jQuery für die Datenübertragung vorgestellt und spezifische Anweisungen bereitgestellt.

PHP-Fehler: Null als aufrufbare Lösung verwenden! Während des PHP-Entwicklungsprozesses stoßen wir häufig auf Fehlermeldungen. Einer der häufigsten Fehler ist „Null als Callable verwenden“. Diese Fehlermeldung weist darauf hin, dass der Parameter beim Aufruf eines aufrufbaren Objekts einen Nullwert übergeben hat, was dazu führt, dass der entsprechende Vorgang nicht ausgeführt werden kann. Dieser Fehler tritt normalerweise auf, wenn eine Rückruffunktion, -methode oder -instanz einer Klasse aufgerufen wird und wir das aufrufbare Objekt korrekt als Parameter übergeben müssen. Hier sind einige gängige Codebeispiele:

Durch die Implementierung der Callable-Schnittstelle zum Erstellen einer Thread-Klasse wird seit Java 5 die Callable-Schnittstelle bereitgestellt. Diese Schnittstelle ist eine erweiterte Version der Runnable-Schnittstelle. Die Callable-Schnittstelle stellt eine call()-Methode als Thread-Ausführungskörper bereit Mit der call()-Methode können Ausnahmen deklariert werden. booleancancel(booleanmay) versucht, die mit der Zukunft verknüpfte Callable-Aufgabe abzubrechen. Vget() gibt den Rückgabewert der call()-Methode in der Call-Aufgabe zurück. Der Aufruf dieser Methode führt zum Blockieren des Threads und Sie müssen warten, bis der untergeordnete Thread beendet ist, bevor Sie den Rückgabewert erhalten. Vget(longtimeout,Ti

Hinweis 1: Die Callable-Schnittstelle kann Ergebnisse zurückgeben oder Ausnahmeaufgaben auslösen, und der Implementierer kann eine Parameterlose Aufrufmethode definieren. 2. Anders als die Ausführungsmethode von Thread und Runnable ist die Ausführungsmethode von Callable Tasks call. call() kann einen Wert zurückgeben, die run()-Methode jedoch nicht. call() kann geprüfte Ausnahmen wie ClassNotFoundException auslösen, run() kann jedoch keine geprüften Ausnahmen auslösen. InstanzklasseMyCallableimplementsCallable{MyCallable(){}@OverridepublicInteger

Verwendung von EXISTS in MYSQL, mit Codebeispielen In der MYSQL-Datenbank ist EXISTS ein sehr nützlicher Operator, der verwendet wird, um zu bestimmen, ob eine Unterabfrage mindestens eine Datenzeile zurückgibt. Es wird normalerweise mit einer WHERE-Klausel verwendet, um Daten herauszufiltern, die Bedingungen basierend auf den Ergebnissen einer Unterabfrage erfüllen. Bei der Verwendung von EXISTS müssen Sie die folgenden Punkte beachten: Die EXISTS-Bedingung kümmert sich nicht um die spezifischen Daten, die von der Unterabfrage zurückgegeben werden, sondern nur darum, ob Daten zurückgegeben werden. Die EXISTS-Bedingung kann in Kombination mit anderen Bedingungen verwendet werden.
