ReflectionClass::hasProperty()
(PHP 5 >= 5.1.2, PHP 7)
检查属性是否已定义
说明
public ReflectionClass::hasProperty(string $name): bool
检查指定的属性是否已定义。
参数
- $name
待检查的属性的名称。
返回值
如果有这个属性返回TRUE
,否则返回FALSE
。
范例
Example #1ReflectionClass::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)
参见
- ReflectionClass::hasConstant() 检查常量是否已经定义
- ReflectionClass::hasMethod() 检查方法是否已定义
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 } ?>