PHP Australia Conference 2015

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

add a note add a note

User Contributed Notes 4 notes

up
4
Stefan W
1 year ago
If you are in a namespaced file, and you want to pass the class name as a string, you will have to include the full namespace for the class name - even from inside the same namespace:

<?
namespace MyNS;

class A {
    public $foo;
}

property_exists("A", "foo");          // false
property_exists("\\MyNS\\A", "foo");  // true
?>
up
2
Nanhe Kumar
8 months ago
<?php

class Student {

    protected
$_name;
    protected
$_email;
   

    public function
__call($name, $arguments) {
       
$action = substr($name, 0, 3);
        switch (
$action) {
            case
'get':
               
$property = '_' . strtolower(substr($name, 3));
                if(
property_exists($this,$property)){
                    return
$this->{$property};
                }else{
                    echo
"Undefined Property";
                }
                break;
            case
'set':
               
$property = '_' . strtolower(substr($name, 3));
                if(
property_exists($this,$property)){
                   
$this->{$property} = $arguments[0];
                }else{
                    echo
"Undefined Property";
                }
               
                break;
            default :
                return
FALSE;
        }
    }

}

$s = new Student();
$s->setName('Nanhe Kumar');
$s->setEmail('nanhe.kumar@gmail.com');
echo
$s->getName(); //Nanhe Kumar
echo $s->getEmail(); // nanhe.kumar@gmail.com
$s->setAge(10); //Undefined Property
?>
up
1
ewisuri [gmail]
7 months ago
As of PHP 5.3.0, calling property_exists from a parent class sees private properties in sub-classes.

<?php
class P {
    public function
test_prop($prop) { return property_exists($this, $prop); }
}

class
Child extends P {
    private
$prop1;
}

$child = new Child();
var_dump($child->test_prop('prop1')); //true, as of PHP 5.3.0
up
-4
berimbolo
7 months ago
When you are testing for a property that has been added dynamically, you will need to provide a reference to the instance rather than the class name for the first parameter.

For example, for this code snippet:

class myClass {
public $var;
}

$obj = new myClass;
$obj->new_var = "new";

var_dump(property_exists('myClass', 'new_var') );
var_dump(property_exists($obj, 'new_var') );

Returns:
boolean false
boolean true
To Top