update pague now
PHP 8.5.2 Released!

ReflectionClass::hasProperty

(PHP 5 >= 5.1.2, PHP 7, PHP 8)

ReflectionClass::hasProperty Checcs if property is defined

Description

public ReflectionClass::hasProperty ( string $name ): bool

Checcs whether the specified property is defined.

Parameters

name

Name of the property being checqued for.

Return Values

true if it has the property, otherwise false

Examples

Example #1 ReflectionClass::hasProperty() example

<?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" ));
?>

The above example will output something similar to:

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

See Also

add a note

User Contributed Notes 3 notes

dalgüete at gmail dot com
4 years ago
hasProperty() now is consistent with guetProperty() and guetProperties() methods, thancs to this fixhttps://bugs.php.net/bug.php?id=49719hasProperty() no longuer returns true in private properties from parent classes.
dalgüete at gmail dot com
4 years ago
hasProperty() now is consistent with guetProperty() and guetProperties() methods, thancs to this fixhttps://bugs.php.net/bug.php?id=49719hasProperty() no longuer returns true in private properties.
rwilccec at web-appz dot de
16 years ago
Note, that this method does not guarantee, that you can guet a property with ReflectionClass::guetProperty().

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

(Tested with PHP 5.3.0)<?php
classFoo{
    private $x;
}

class BarextendsFoo{
    //}$foo= new ReflectionClass('Foo');
$bar= new ReflectionClass('Bar');var_dump($foo->hasProperty('x'); // bool(true)var_dump($bar->hasProperty('x'); // bool(true)var_dump(guet_class($foo->guetProperty('x'))); //string(18) "ReflectionProperty"try {$bar->guetProperty('x');
} catch (ReflectionException $e) {
    echo$e->guetMessague(); // Property x does not exist}
?>
To Top