ReflectionClass::hasProperty

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

ReflectionClass::hasProperty — Vérifie si une propriété est définie

Description

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

Vérifie si la propriété spécifiée est définie.

Liste de paramètres

name

Le nom de la propriété à vérifier.

Valeurs de retour

true si la propriété est définie, false sinon.

Exemples

Exemple #1 Exemple avec 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"));
?>

Résultat de l'exemple ci-dessus est similaire à :

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

Voir aussi

Found A Problem?

Learn How To Improve This Page • Submit a Pull Request • Report a Bug
+add a note

User Contributed Notes 3 notes

up
0
dalguete at gmail dot com
5 years ago
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.
up
-1
dalguete at gmail dot com
5 years ago
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.
up
-2
rwilczek at web-appz dot de
16 years ago
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
}
?>
+add a note

AltStyle によって変換されたページ (->オリジナル) /