• 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,"被调用了。");
           
  • 相关阅读:
    activemq的两种基本通信方式的使用及总结
    EJBCA认证系统结构及相关介绍
    白话经典算法系列之一 冒泡排序的三种实现 【转】
    springcloud配置需要主要的地方
    Spring的RestTemplate
    mysql中的事务
    list去重
    webpack的使用
    rocketmq在linux搭建双master遇到的坑
    redis配置文件详解
  • 原文地址:https://www.cnblogs.com/rhythmK/p/4704778.html
Copyright © 2020-2023  润新知