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

search for in the

trait_exists> <method_exists
[edit] Last updated: Fri, 17 May 2013

view this page in

property_exists

(PHP 5 >= 5.1.0)

property_exists Prüft auf die Existenz einer Eigenschaft eines Objektes bzw. einer Klasse

Beschreibung

bool property_exists ( mixed $class , string $property )

Prüft ob die Eigenschaft property in der angegebenen Klasse existiert.

Hinweis:

Anders als isset() gibt property_exists() auch dann TRUE zurück wenn eine Eigenschaft den Wert NULL hat.

Parameter-Liste

class

Objektinstanz oder Name einer Klasse.

property

Name der zu prüfenden Eigenschaft.

Rückgabewerte

Gibt TRUE zurück wenn die Eigenschaft existiert, FALSE wenn nicht, und NULL im Fehlerfall.

Anmerkungen

Hinweis:

Die Verwendung dieser Funktion wird jegliche registrierte Autoloader verwenden, falls die Klasse nicht bereits bekannt ist.

Hinweis:

Die property_exists() Funktion kann keine Eigenschaften erkennen die über die 'magische' Methode __get implementiert sind.

Changelog

Version Beschreibung
5.3.0 Die Funktion prüft auf die Existenz der Eigenschaft unabhängig von den Zugriffsberechtigungen.

Beispiele

Beispiel #1 Ein property_exists() Beispiel

<?php

class myClass {
    public 
$mine;
    private 
$xpto;
    static protected 
$test;

    static function 
test() {
        
var_dump(property_exists('myClass''xpto')); //true
    
}
}

var_dump(property_exists('myClass''mine'));   //true
var_dump(property_exists(new myClass'mine')); //true
var_dump(property_exists('myClass''xpto'));   //true  ab PHP 5.3.0
var_dump(property_exists('myClass''bar'));    //false
var_dump(property_exists('myClass''test'));   //true ab PHP 5.3.0
myClass::test();

?>

Siehe auch

  • method_exists() - Prüft on eine Methode innerhalb eines Objekts existiert



trait_exists> <method_exists
[edit] Last updated: Fri, 17 May 2013
 
add a note add a note User Contributed Notes property_exists - [5 notes]
up
1
Alan71
6 years ago
This function is case-sensitive, so :

<?php
class Test {
   public
$property;
  
   public
foo() { echo($property); }
}

property_exists('Test', 'property');   // will return true
property_exists('Test', 'Property');   // will return false
?>

(under PHP5.1.2)
up
0
webmaster at thedigitalorchard dot ca
3 years ago
According to my tests, isset() is 4 times faster than property_exists(), so use a combination of these functions in your programming for best performance.

For example:

<?php

$fld
= 'somevar';

if (isset(
$this->$fld) || property_exists($this, $fld)) {

}

?>

If your programming routinely checks a larger number of property names that are expected to exist, whereas a smaller number may not, then using isset(), as above, will result in faster execution of the programming.
up
-1
rayro at gmx dot de
5 years ago
To check the existance of a property from outside the scope (even if it's not accessible) try/consider the following:

<?php
function property_exists_safe($class, $prop)
{
 
$r = property_exists($class, $prop);
  if (!
$r) {
   
$x = new ReflectionClass($class);
   
$r = $x->hasProperty($prop);
  }
  return
$r;
}

class
myClass {
    public
$mine;
    private
$xpto;

    static function
test1() {
       
// true, it can be accessed from here
       
var_dump(property_exists('myClass', 'xpto'));
    }

    static function
test2() {
       
// true, it can be accessed from everywhere!
       
var_dump(property_exists_safe('myClass', 'xpto'));
    }
}

var_dump(property_exists('myClass', 'mine')); //true
var_dump(property_exists(new myClass, 'mine')); //true
var_dump(property_exists('myClass', 'xpto')); //false, isn't public
myClass::test1();
echo(
"\n");
var_dump(property_exists_safe('myClass', 'mine')); //true
var_dump(property_exists_safe(new myClass, 'mine')); //true
var_dump(property_exists_safe('myClass', 'xpto')); //true
myClass::test2(); //true
?>

bool(true)
bool(true)
bool(false)
bool(true)

bool(true)
bool(true)
bool(true)
bool(true)
up
-1
jcaplan at bogus dot amazon dot com
6 years ago
The documentation leaves out the important case of new properties you add to objects at run time.  In fact, property_exists will return true if you ask it about such properties.

<?php
class Y {}
$y = new Y;

echo isset(
$y->prop ) ? "yes\\n" : "no\\n"; // no;
echo property_exists( 'Y', 'prop' ) ? "yes\\n" : "no\\n"; // no
echo property_exists( $y, 'prop' ) ? "yes\\n" : "no\\n"; // no

$y->prop = null;

echo isset(
$y->prop ) ? "yes\\n" : "no\\n"; // no;
echo property_exists( 'Y', 'prop' ) ? "yes\\n" : "no\\n"; // no
echo property_exists( $y, 'prop' ) ? "yes\\n" : "no\\n"; // yes
?>
up
-2
timshel
7 years ago
I haven't tested this with the exact function semantics of 5.1, but this code should implement this function in php < 5.1:

<?php
if (!function_exists('property_exists')) {
  function
property_exists($class, $property) {
    if (
is_object($class))
     
$class = get_class($class);

    return
array_key_exists($property, get_class_vars($class));
  }
}
?>

 
show source | credits | sitemap | contact | advertising | mirror sites