PHP Doku:: Checks if the object is of this class or has this class as one of its parents - function.is-a.html

Verlauf / Chronik / History: (27) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzVariablen- und typbezogene ErweiterungenKlassen- und ObjektinformationenKlassen- und Objekt-Funktionenis_a

Ein Service von Reinhard Neidl - Webprogrammierung.

Klassen- und Objekt-Funktionen

<<interface_exists

is_subclass_of>>

is_a

(PHP 4 >= 4.2.0, PHP 5)

is_aChecks if the object is of this class or has this class as one of its parents

Beschreibung

bool is_a ( object $object , string $class_name )

Checks if the given object is of this class or has this class as one of its parents.

Parameter-Liste

object

The tested object

class_name

The class name

Rückgabewerte

Returns TRUE if the object is of this class or has this class as one of its parents, FALSE otherwise.

Changelog

Version Beschreibung
5.3.0 This function is no longer deprecated, and will therefore no longer throw E_STRICT warnings.
5.0.0 This function became deprecated in favour of the instanceof operator. Calling this function will result in an E_STRICT warning.

Beispiele

Beispiel #1 is_a() example

<?php
// define a class
class WidgetFactory
{
  var 
$oink 'moo';
}

// create a new object
$WF = new WidgetFactory();

if (
is_a($WF'WidgetFactory')) {
  echo 
"yes, \$WF is still a WidgetFactory\n";
}
?>

Beispiel #2 Using the instanceof operator in PHP 5

<?php
if ($WF instanceof WidgetFactory) {
    echo 
'Yes, $WF is a WidgetFactory';
}
?>

Siehe auch


5 BenutzerBeiträge:
- Beiträge aktualisieren...
p dot scheit at zweipol dot net
16.01.2007 10: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.02.2006 21: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
6.02.2006 20: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
8.10.2005 2: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
6.10.2005 4: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.



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)