|
is_a
Checks if the object is of this class or has this class as one of its parents
(PHP 4 >= 4.2.0, PHP 5)
Example 383. is_a() example<?php Example 384. Using the instanceof operator in PHP 5<?php Related Examples ( Source code ) » is_a Examples ( Source code ) » extends and implement Examples ( Source code ) » s_a is a class instance Examples ( Source code ) » Get class constructor's parameter information Examples ( Source code ) » Returns true if $a is an array Examples ( Source code ) » Creating a simple line graph - ImagickDraw Examples ( Source code ) » Imagick new features / An example of Imagick::roundCorners Examples ( Source code ) » Create a PDF document containing a pie chart Examples ( Source code ) » Animated Talking Captcha php class Examples ( Source code ) » Search the Web using Google API Examples ( Source code ) » Feed Validator Examples ( Source code ) » Get WhoIs Information for 270 different tld's Examples ( Source code ) » E-mail address validation class Examples ( Source code ) » HttpRequest An multipart POST request Examples ( Source code ) » HttpRequestPool Examples Examples ( Source code ) » HTTP caching Code Examples / Notes » is_amartin dunisch
Workaround for older PHP-Versions: function is_a($anObject, $aClass) { return get_class($anObject) == strtolower($aClass) or is_subclass_of($anObject, $aClass); } dead dot screamer
Why I test if class `A` inherit class `B` or implements interface `C` before I create class `A`? <? //That isn't work: //1. function is_A() if(is_A('A','B'))$a=new A; if(is_A('A','C'))$a=new A; //2. operator instanceOf if(A instanceOf B)$a=new A; if(A instanceOf C)$a=new A; ?> aidan
This functionality is now implemented in the PEAR package PHP_Compat. More information about using this function without upgrading your version of PHP can be found on the below link: http://pear.php.net/package/PHP_Compat zabmilenko
Lazy Instantiation using is_a() and php5 <?php class ObjectA { public function print_line($text) { print $text . "\n"; } } class ObjectB { public function ObjectA() { static $objecta; if (!is_a('ObjectA', $objecta)) { $objecta = new ObjectA; } return $objecta; } } $obj = new ObjectB; $obj->ObjectA()->print_line('testing, 1 2 3'); ?> In the above example, ObjectA is not instantiated until needed by ObjectB. Then ObjectB can continually use it's creation as needed without reinstantiating it. There are other ways, but I like this one :-) cesoid
is_a returns TRUE for instances of children of the class. For example: class Animal {} class Dog extends Animal {} $test = new Dog(); In this example is_a($test, "Animal") would evaluate to TRUE as well as is_a($test, "Dog"). This seemed intuitive to me, but did not seem to be documented. zabmilenko
In the below example, the object and class name need to be reversed. Sorry. Wrong: 'ObjectA', $objecta Right: $objecta, 'ObjectA' p dot scheit
At least in PHP 5.1.6 this works as well with Interfaces. <?php interface test { public function A(); } class TestImplementor implements test { public function A () { print "A"; } } $testImpl = new TestImplementor(); var_dump(is_a($testImpl,'test')); ?> will return true |