Home>Article>Backend Development> is_callable() and method_exists() functions in PHP
In many product applications, we can often see the following usage, which is used to check whether a method in an object exists.
SomeMethod($this, TRUE); } ?
The purpose of this code is relatively easy to understand. There is an object called $object. We want to know whether it has a method called SomeMethod. If so, call this method.
This code looks correct and will run fine most of the time. But if the method of this $object object is invisible to the current running environment, can the program still run normally? Just as this function name method exists, it just checks whether the class or object we provide has the method we expect. If so, it returns TRUE. If not, it returns FALSE. The issue of visibility is not considered here. Therefore, when you happen to determine a private or protected method, you can get a correct return, but when executing, you will get a "Fatal Error" error warning.
The real intention of the above code should be understood as: for the provided class or object, can we call its SomeMethod method in the current scope. And this is the purpose of theis_callable()
function.is_callable()
The function receives a callback parameter, which can specify a function name or an array containing method names and objects. If it can be executed in the current scope, it returns TRUE.
SomeMethod($this, TRUE); }?>
Let’s give an example to illustrate the difference between the two
'; }
After executing the above script, we will clearly see the difference between the two functions.
is_callable()
There are other uses, for example, not checking the provided class or method, but only checking whether the syntax of the function or method is correct. Likemethod_exists()
,is_callable()
can trigger automatic loading of classes.
If an object has a magic method__call
,method_exists()
will return FALSE when judging the method, andis_callable()
will return TRUE.
'; } } $obj = new MethodTest(); $obj->runtest('in object context'); var_dump(method_exists($obj,'runtest')); var_dump(is_callable(array($obj,'runtest'))); echo '
';
Running results
Calling object method runtest in object context bool(false) bool(true)
Recommended:PHP video tutorial
The above is the detailed content of is_callable() and method_exists() functions in PHP. For more information, please follow other related articles on the PHP Chinese website!