zoukankan      html  css  js  c++  java
  • PHP反射类的理解(代码篇)

    <?php
    /**
    * Created by PhpStorm.
    * User:
    * Date: 2017/6/12
    * Time: 14:34
    * 关于反射类的理解
    */
    class Person {


    public $datang = '123';

    public $datang1 = '1234';

    private function getName(){
    echo $this->datang;
    }

    public function getName1(){
    echo $this->datang1;
    }

    }

    //建立 Person这个类的反射类
    $class = new ReflectionClass('Person');

    //打印所有属性名,包含private,protected,public
    $properties = $class->getProperties();
    foreach ($properties as $key => $value) {
    var_dump($value->getName());
    }



    //打印所有属性的注释并正则,包含private,protected,public
    foreach($properties as $property) {
    $docblock = $property->getDocComment();
    //只能打印多行注释
    var_dump($docblock);
    preg_match('/ type=([a-z_]*) /', $docblock, $matches);
    var_dump($matches);
    }


    //打印所有方法名
    foreach ($class->getMethods() as $key => $value) {
    var_dump($value->getName());
    }

    /** 如何执行方法 */
    //相当于实例化Person 类
    $instance = $class->newInstanceArgs();
    //执行getName1方法,方法必须是public属性的,否则会报fatal error
    $instance->getName1();

    //获取Person getName1方法
    $ec=$class->getmethod('getName1');
    //执行getName1方法,方法必须是public属性的,否则会报fatal error
    $ec->invoke($instance);
  • 相关阅读:
    了解DockerFile
    容器数据卷
    Docker镜像讲解
    Java语法学习笔记:多态
    决策树之分类与回归
    python数据分析回归算法
    python之斐波那契序列算法的总结
    pandas 关于数据分组和聚合
    pandas中关于数据合并join,merge
    scrapy爬虫之断点续爬,增量爬取,断网急救
  • 原文地址:https://www.cnblogs.com/datang6777/p/6992958.html
Copyright © 2011-2022 走看看