What is the difference between is_a() function and instanceof in PHP?
is_a() Function
The is_a() is a built-in function in PHP which is used to check whether a given object is of a given class or not. It also checks if the given class is one of the parents of the given object or not.
Syntax:
bool is_a( $object, $class_name, $allow_string )
Parameters: This function accepts three parameters as mentioned above and described below:
- object: This parameter is used to hold the tested object.
- class_name: This parameter is used to hold the class name.
- allow_string: If this parameter set to False, string class name as object is not allowed.
Return Value : This function returns True if the object is of this class or has this class as one of its parents else it will return a False value.
Below programs illustrate the is_a() function:
<?php
class GeeksforGeeks {
var $store = 'Hello geeks!' ;
}
$geek = new GeeksforGeeks();
if ( is_a ( $geek , 'GeeksforGeeks' )) {
echo "Yes" ;
}
?>
|
instanceof operator
The instanceof operator is used in PHP to find out if an object is an instantiated instance of a class.
Syntax:
$a instanceof MyClass
Operands: This operator contains two operands which are listed below:
- $a: This is used as an object.
- MyClass: It is a class name.
Return Value: It returns True if the object is of this class or has this class as one of its parents else it will return a False value.
Below programs illustrate the instanceof operator in PHP:
<?php
class GeeksforGeeks {
var $store = 'Hello geeks!' ;
}
$geek = new GeeksforGeeks();
if ( $geek instanceof GeeksforGeeks) {
echo "Yes" ;
}
?>
|
Difference between is_a() function and instanceof operator:
- The is_a() is a function, whereas instanceof is a language construct. The is_a() function will be significantly slower since it has all the overhead of executing a function call.
- In case of callback in functions (like array_map) instanceof is not a function, it is a language construct, so it cannot use as callback. On the other hand callback can be used in is_a() function.
- The use of direct class name with instanceof is shorter than is_a() function.
Example:
// Short syntax (comparatively)
$a instanceof MyClass
is_a( $a, MyClass::class )
- The is_a() being a function takes an object as parameter one, and a string as parameter two, whereas instanceof takes an object as parameter one, and can take a class name, object instance, or class identifier (class name written without quotes) as parameter two.
Example of is_a():
// Only way to call it
is_a( $object, $string );
Example of instanceof:
// Object instance
$object instanceof $otherObject;
// String class name
$object instanceof $string;
// Identifier for the class
$object instanceof ClassName;
Last Updated :
22 Nov, 2018
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...