• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ReflectionClass::hasProperty()

    (PHP 5 >= 5.1.2, PHP 7)

    检查属性是否已定义

    说明

    publicReflectionClass::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
    }
    ?>