©
Ce document utilise Manuel du site Web PHP chinois Libérer
(PHP 5 >= 5.1.0)
ReflectionClass::hasProperty — 检查属性是否已定义
$name
)检查指定的属性是否已定义。
name
待检查的属性的名称。
如果有这个属性返回 TRUE
,否则返回 FALSE
。
Example #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)
[#1] rwilczek at web-appz dot de [2009-10-13 05:40:20]
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
}
?>