CakeFest 2024: The Official CakePHP Conference

ReflectionClass::hasProperty

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

ReflectionClass::hasPropertyChecks if property is defined

Descrizione

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

Checks whether the specified property is defined.

Elenco dei parametri

name

Name of the property being checked for.

Valori restituiti

true if it has the property, otherwise false

Esempi

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

Il precedente esempio visualizzerà qualcosa simile a:

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

Vedere anche:

add a note

User Contributed Notes 3 notes

up
0
dalguete at gmail dot com
2 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
2 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
14 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
}
?>
To Top