What is the difference between is_a() function and instanceof in PHP?
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 // PHP program to illustrate the // is_a() function // sample class class w3wiki { var $store = 'Hello Beginner!' ; } // create a new object $geek = new w3wiki(); // checks if $geek is an object // of class w3wiki if ( is_a ( $geek , 'w3wiki' )) { echo "Yes" ; } ?> |
Output:
Yes
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 // PHP program to illustrate instanceof // operator // sample class class w3wiki { var $store = 'Hello Beginner!' ; } // create a new object $geek = new w3wiki(); // Checks if $geek is an object of // class w3wiki if ( $geek instanceof w3wiki) { echo "Yes" ; } ?> |
Output:
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;
Contact Us