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: Thu, 20 Jun 2013

view this page in

property_exists

(PHP 5 >= 5.1.0)

property_existsBir nesne veya sınıfın belirtilen özelliğe sahip olup olmadığına bakar

Açıklama

bool property_exists ( mixed $sınıf , string $özellik )

Bu işlev, belirtilen sınıf sınıfının belirtilen özellik özelliğine sahip olup olmadığına bakar.

Bilginize:

isset() işlevinin tersine, property_exists() işlevi, özelliğin değeri NULL olsa bile TRUE döndürür.

Değiştirgeler

sınıf

Sınanacak sınıf veya nesne.

özellik

Aranacak özelliğin ismi.

Dönen Değerler

Özellik mevcutsa TRUE, değilse FALSE, bir hata durumunda NULL döner.

Sürüm Bilgisi

Sürüm: Açıklama
5.3.0 Artık özelliğin varlığına erişilebilirlikten bağımsız olarak bakılıyor.

Örnekler

Örnek 1 - property_exists() örneği

<?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, PHP 5.3.0'dan beri
var_dump(property_exists('myClass''bar'));    //false
var_dump(property_exists('myClass''test'));   //true, PHP 5.3.0'dan beri
myClass::test();

?>

Ayrıca Bakınız



trait_exists> <method_exists
[edit] Last updated: Thu, 20 Jun 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
7 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