PHP: is_a - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

is_subclass_of interface_exists

Last updated: Sat, 27 Jan 2007

view this page in

# is_a

(PHP 4 >= 4.2.0, PHP 5)

is_a -- Возвращает `TRUE` если объект принадлежит классу или является одним из его наследователей.

## Описание

bool is_a ( object object, string class_name )

Функция возвращает `TRUE` если объект принадлежит классу или является одним из его наследователей. В противном случае возвращается `FALSE`

Пример 1. Пример использования is_a()

`<?php
// объявление класса
class WidgetFactory
{
var $oink = 'moo';
}
// создание нового объекта
$WF = new WidgetFactory();
if (is_a($WF, 'WidgetFactory')) {
echo "yes, \$WF is still a WidgetFactory\n";
}
?>`

См. также get_class(), get_parent_class() и is_subclass_of().

add a note User Contributed Notes
is_a
p dot scheit at zweipol dot net
16-Jan-2007 01:44
`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`
martin dunisch
13-Feb-2006 12:02
`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 at seznam dot cz
06-Feb-2006 11:44
`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;
?>`
zabmilenko at hotmail dot com
07-Oct-2005 05:20
`In the below example, the object and class name need to be reversed. Sorry.
Wrong:
'ObjectA', $objecta
Right:
$objecta, 'ObjectA'`
zabmilenko at hotmail dot com
07-Oct-2005 05:18
`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 at yahoo dot com
05-Oct-2005 07:01
`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.`
aidan at php dot net
20-May-2004 07:11
`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`
add a note
is_subclass_of interface_exists

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 09:32:46 2007 PST