ReflectionClass::hasProperty

(PHP 5 >= 5.1.0, PHP 7)

ReflectionClass::hasPropertyПроверяет, задано ли свойство

Описание

public bool ReflectionClass::hasProperty ( string $name )

Проверяет, задано ли в классе указанное свойство или нет.

Список параметров

name

Имя проверяемого свойства.

Возвращаемые значения

TRUE если свойство задано, в противном случае FALSE

Примеры

Пример #1 Пример использования ReflectionClass::hasProperty()

<?php
class Foo {
    public    
$p1;
    protected 
$p2;
    private   
$p3;

}

$obj = new ReflectionObject(new Foo());

var_dump($obj->hasProperty("p1"));
var_dump($obj->hasProperty("p2"));
var_dump($obj->hasProperty("p3"));
var_dump($obj->hasProperty("p4"));
?>

Результатом выполнения данного примера будет что-то подобное:

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

Смотрите также

Коментарии

Note, that this method does not guarantee, that you can get a property with ReflectionClass::getProperty().

ReflectionClass::hasProperty() considers the parent classes (ignoring however, that a private property is not inherited), while ReflectionClass::getProperty() and ReflectionClass::getProperties() don't care about inheritance.

(Tested with PHP 5.3.0)

<?php
class Foo
{
    private 
$x;
}

class 
Bar extends Foo
{
   
//
}

$foo = new ReflectionClass('Foo');
$bar = new ReflectionClass('Bar');

var_dump($foo->hasProperty('x'); // bool(true)
var_dump($bar->hasProperty('x'); // bool(true)

var_dump(get_class($foo->getProperty('x'))); //string(18) "ReflectionProperty"
try {
   
$bar->getProperty('x');
} catch (
ReflectionException $e) {
    echo 
$e->getMessage(); // Property x does not exist
}
?>
2009-10-13 08:40:20
http://php5.kiev.ua/manual/ru/reflectionclass.hasproperty.html
hasProperty() now is consistent with getProperty() and getProperties() methods, thanks to this fix https://bugs.php.net/bug.php?id=49719

hasProperty() no longer returns true in private properties.
2021-05-18 00:19:14
http://php5.kiev.ua/manual/ru/reflectionclass.hasproperty.html
hasProperty() now is consistent with getProperty() and getProperties() methods, thanks to this fix https://bugs.php.net/bug.php?id=49719

hasProperty() no longer returns true in private properties from parent classes.
2021-05-18 03:48:15
http://php5.kiev.ua/manual/ru/reflectionclass.hasproperty.html

    Поддержать сайт на родительском проекте КГБ