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
}
?>
ReflectionClass::hasProperty
(PHP 5 >= 5.1.0)
ReflectionClass::hasProperty — Özellik tanımlı mı diye bakar
Açıklama
public bool ReflectionClass::hasProperty
( string $isim
)
Belirtilen özellik tanımlıysa TRUE döner.
Değiştirgeler
- isim
-
Bakılacak özelliğin ismi.
Dönen Değerler
Özellik tanımlıysa TRUE yoksa FALSE döner.
Örnekler
Örnek 1 - ReflectionClass::hasProperty örneği
<?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"));
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
bool(true) bool(true) bool(true) bool(false)
Ayrıca Bakınız
- ReflectionClass::hasConstant - Sabit tanımlı mı diye bakar
- ReflectionClass::hasMethod - Yöntem tanımlı mı diye bakar
ReflectionClass::hasProperty
rwilczek at web-appz dot de
13-Oct-2009 12:40
13-Oct-2009 12:40
