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下的邮件发送
    Linux下用户和raid练习题
    Linux centos7.5操作系统的安装
    Linux chattr文件锁
    Linux系统下root密码丢失解决方案
    周总结2
    课堂作业1
    开课博客
    阅读3
    作业8
  • 原文地址:https://www.cnblogs.com/rhythmK/p/4704778.html
Copyright © 2011-2022 走看看