PHP Doku:: Prüft, ob eine Variable vom Typ object ist - function.is-object.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzVariablen- und typbezogene ErweiterungenVariablenbehandlungFunktionen zur Behandlung von Variablenis_object

Ein Service von Reinhard Neidl - Webprogrammierung.

Funktionen zur Behandlung von Variablen

<<is_numeric

is_real>>

is_object

(PHP 4, PHP 5)

is_objectPrüft, ob eine Variable vom Typ object ist

Beschreibung

bool is_object ( mixed $var )

Prüft, ob die gegebene Variable ein Objekt ist.

Parameter-Liste

var

Die zu untersuchende Variable.

Rückgabewerte

Gibt TRUE zurück, wenn var vom Typ object ist, ansonsten FALSE.

Beispiele

Beispiel #1 is_object()-Beispiel

<?php
// Eine einfache Funktion deklarieren, die ein Array unseres Objekts zurückgibt
function get_students($obj)
{
    if (!
is_object($obj)) {
        return 
false;
    }

    return 
$obj->students;
}

// Deklarieren einer neuen Instanz der Klasse und Befüllen mit Werten
$obj = new stdClass();
$obj->students = array('Kalle''Ross''Felipe');

var_dump(get_students(null));
var_dump(get_students($obj));
?>

Anmerkungen

Hinweis:

Die Funktion wird FALSE zurückgeben, wenn sie auf ein unserialisiertes Objekt angewendet wird, dessen Klassendefinition nicht geladen ist (auch wenn gettype() object zurückgibt).

Siehe auch

  • is_bool() - Prüft, ob eine Variable vom Typ boolean ist
  • is_int() - Prüft, ob eine Variable vom Typ int ist
  • is_float() - Prüft, ob eine Variable vom Typ float ist
  • is_string() - Prüft, ob Variable vom Typ string ist
  • is_array() - Prüft, ob die Variable ein Array ist


9 BenutzerBeiträge:
- Beiträge aktualisieren...
will
20.03.2010 23:36
Just discovered:
is_a  (  object $object  ,  string $class_name  )
Which checks if the object is of this class or has this class as one of its parents

Which seems to do what a lot here are trying to replicate
ldean at saleamp dot com
1.09.2009 16:16
Use instanceof() to check for a specific type.
Senthryl
17.03.2009 15:03
Cleaning it up even more:

<?php
function is_obj(&$object, $className = null, $caseSensitive = true) {
    return
is_object($object) && (!is_string($className) || preg_match('/^'.$className.'$/D'.($caseSensitive ? '' : 'i'), get_class($object)));
}
?>
gregdangelo at gmail dot com
14.04.2008 21:03
cleaned up peter's code... use only one return statement

function is_obj( &$object, $check=null, $strict=true )
{
$result = false;
  if (is_object($object)) {
      if ($check == null) {
          $result =  true;
      } else {
           $object_name = get_class($object);
           $result =  ($strict === true)?
               ( $object_name == $check ):
               ( strtolower($object_name) == strtolower($check) );
      }  
  }
return $result;
}
peter at i-node dot com dot br
20.05.2006 10:03
Optimizing the is_obj() from corychristison, and with the "return false" suggested by xixulon.

function is_obj( &$object, $check=null, $strict=true )
{
  if (is_object($object)) {
      if ($check == null) {
          return true;
      } else {
           $object_name = get_class($object);
           return ($strict === true)?
               ( $object_name == $check ):
               ( strtolower($object_name) == strtolower($check) );
      }   
  } else {
      return false;
  }
}
corychristison[aT-]lavacube(.dot)com
3.02.2005 2:06
Thank you victor AT fourstones DOT net.

I have written a function to do what victor has suggested, with the ease of use of is_object. It can be used to replace is_object(), but has an extra field [$check], to compare to a certain name. If $check is left empty, it will just check if &$object is an object.

<?php

function is_obj( &$object, $check=null, $strict=true )
{
    if(
$check == null && is_object($object) )
    {
        return
true;
    }
    if(
is_object($object) )
    {
       
$object_name = get_class($object);
        if(
$strict === true )
        {
            if(
$object_name == $check )
            {
                return
true;
            }
        }
        else
        {
            if(
strtolower($object_name) == strtolower($check) )
            {
                return
true;
            }
        }
    }
}

?>

This could probably be cleaned up, but it's spaced out to be easy to read.
victor AT fourstones DOT net
2.01.2005 0:49
er, I don't think that's right, especially if calling from another object instance:

<?

function test_this()
{
   
$c2 = new C2();
   
$c2->func();
   
$c1 = new C1();
   
$c1->func();
   
C1::func();
}

class
C2
{
    function
func()
    {
       
C1::func();
    }
}

class
C1
{
    function
func()
    {
        if( isset(
$this) )
        {
            if(
strtolower(get_class($this)) != 'c1' )
                print(
"oops\n");
            else
                print(
"this is ok\n" );
        }
        else
        {
            print(
"static call\n");
        }
    }
}

test_this();
?>

yields:
---------- run-php ----------

oops
this is ok
static call
corychristison[aT-]lavacube(.dot)com
1.01.2005 16:47
You can use is_object($this) to detect if the function is being called via instance or procedure.

Example:

<?php

class mrClass {

    function
test( )
    {
        if(
is_object($this) )
        {
        
// do something for instance method
           
echo 'this is an instance call <br />' . "\n";
        }
        else
        {
        
// do something different for procedural method
           
echo 'this is a procedure call <br />' . "\n";
        }
    }

}

$inst = new mrClass();
$inst->test();

mrClass::test();

?>

This would output:
this is an instance call <br />
this is a procedure call <br />

:-) Happy coding!
lbjay can be emailed at reallywow dot com
2.05.2003 21:18
I'm not even sure how to articulate this, so I'm going to just include test code. Maybe someone else will someday wonder the same thing.

<?
    error_reporting
(E_ALL);
    class
testParent
   
{
        var
$child;

        function
testParent()
        {
           
$this->child = new testChild();
        }
    }

    class
testChild
   
{
        function
testChild()
        {
        }
    }

   
$parent = new testParent();
   
$parent2 = 'foobar';

    print
join(',', Array(
       
is_object($parent) ? 'yes' : 'no',
       
is_object($parent->child) ? 'yes' : 'no',
       
is_object($parent2) ? 'yes' : 'no',
       
is_object($parent2->child) ? 'yes' : 'no'
   
));

?>

This prints "yes,yes,no,no". Basically this shows that you can use is_object to test if the child object is an object without worrying about an error if the parent object isn't an object either.



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",...)