zoukankan      html  css  js  c++  java
  • php 反射

    一、通过{属性名} 对对象赋值。

           $book=new Book();
           $propertyName="name";
           $propertyValue="书本名称";  
           $book->{$propertyName}=$propertyValue;
     
    二、 类的反射使用
         
     参考代码:
             
    class Man{
    
        public  $name;
        protected  $age;
        private  $address;
        public  function  Say($msg)
        {
            echo  "Say:".$msg;
        }
    }
    
    
    //反射 实例化类
    $class=new ReflectionClass('Man');
    
    //获取当前类属性
    // 默认获取全部属性
    // 仅获取私有属性  $class->getProperties( ReflectionProperty::IS_PRIVATE)
    /*
     ReflectionProperty::IS_STATIC
     ReflectionProperty::IS_PUBLIC
     ReflectionProperty::IS_PROTECTED
     ReflectionProperty::IS_PRIVATE
     * */
    foreach( $class->getProperties() as $pro)
    {
        echo "属性名称:". $pro->getName() ."<br/>";
    }
    
    foreach( $class->getMethods() as $method)
    {
        echo "方法名称:". $method->getName()."<br/>";
    }
    
    
    // 判断方法是否为公开
    $method = new ReflectionMethod('Man', 'Say');
    print_r($method->isPublic());
    
    //判断类中是否包括该方法
    $man=new Man();
    if( method_exists($man,"Say"))
    {
        echo "Man 存在 Say 方法";
    }else{
        echo "Man 不存在 Say 方法";
    }
    
    //反射调用
    $reflectionMethod = new ReflectionMethod('Man', 'Say');
    $reflectionMethod->invoke($man,"被调用了。");
           
  • 相关阅读:
    linux 安装ssh
    Pwn环境安装
    18年最后一天
    绘制分形树
    python之绘制图形库turtle(转)
    turtle绘制多个五角星
    Flask的基本操作知识
    pycharm-professional-2018.2.3 汉化激活安装过程
    Could not find a version that satisfies the requirement flask
    豆瓣即将上映电影爬虫作业
  • 原文地址:https://www.cnblogs.com/rhythmK/p/4704778.html
Copyright © 2011-2022 走看看