php提供了什么来实现反射

就算是类成员定义为private也可以在外部访问,不用创建类的实例也可以访问类的成员和方法。

php提供了什么来实现反射

PHP自5.0版本以后添加了反射机制,它提供了一套强大的反射API,允许你在PHP运行环境中,访问和使用类、方法、属性、参数和注释等,其功能十分强大,经常用于高扩展的PHP框架,自动加载插件,自动生成文档,甚至可以用来扩展PHP语言。(推荐学习:PHP编程从入门到精通)

由于它是PHP內建的oop扩展,为语言本身自带的特性,所以不需要额外添加扩展或者配置就可以使用。

PHP反射API会基于类,方法,属性,参数等维护相应的反射类,已提供相应的调用API。

立即学习“PHP免费学习笔记(深入)”;

php-141.png

访问

假设定义了一个类 User,我们首先需要建立这个类的反射类实例,然后基于这个实例可以访问 User 中的属性或者方法。不管类中定义的成员权限声明是否为public,都可以获取到。

username = $username;        $this->password = $password;    }    /**     * 获取用户名     * @return string     */    public function getUsername()    {        return $this->username;    }    /**     * 设置用户名     * @param string $username     */    public function setUsername($username)    {        $this->username = $username;    }    /**     * 获取密码     * @return string     */    private function getPassword()    {        return $this->password;    }    /**     * 设置密码     * @param string $password     */    private function setPassowrd($password)    {        $this->password = $password;    }}$class = new ReflectionClass('ExtendUser');  // 将类名User作为参数,即可建立User类的反射类$properties = $class->getProperties();  // 获取User类的所有属性,返回ReflectionProperty的数组$property = $class->getProperty('password'); // 获取User类的password属性ReflectionProperty$methods = $class->getMethods();   // 获取User类的所有方法,返回ReflectionMethod数组$method = $class->getMethod('getUsername');  // 获取User类的getUsername方法的ReflectionMethod$constants = $class->getConstants();   // 获取所有常量,返回常量定义数组$constant = $class->getConstant('ROLE');   // 获取ROLE常量$namespace = $class->getNamespaceName();  // 获取类的命名空间$comment_class = $class->getDocComment();  // 获取User类的注释文档,即定义在类之前的注释$comment_method = $class->getMethod('getUsername')->getDocComment();  // 获取User类中getUsername方法的注释文档

登录后复制

注意:创建反射类时传送的类名,必须包含完整的命名空间,即使使用了 use 关键字。否则找不到类名会抛出异常。

以上就是php提供了什么来实现反射的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2154640.html

(0)
上一篇 2025年2月25日 06:20:54
下一篇 2025年2月23日 07:37:05

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php探针如何利用

    话说我的网站就是用的win环境的虚拟主机,其实选主机还是要做的心中有数,不要被某些空间商忽悠了。所谓“无奸不商”这句话还是有它存在的意义,既然我们不能相信“天下无贼”,那俺们就只有提高警惕。 购买空间的童鞋应该都知道,在淘宝买空间的时候,那…

    2025年2月25日
    200
  • php探针不显示内存

    本文介绍下php探针代码不显示cpu、内存、硬盘等信息的原因与处理方法,在使用php探针时遇到的一些问题。 本节内容: php探针显示的cpu、内存、硬盘信息(推荐学习:PHP编程从入门到精通) 一般php探针不显示以上信息的原因如下: 立…

    2025年2月25日
    200
  • php算设计优秀的语言吗

    php真的是世界上最好的语言吗? 仔细看下去,你会发现这其实是一个梗,PHP非但很难说是最好的语言,甚至常年位于编程语言鄙视链的下游。(推荐学习:PHP编程从入门到精通) 诚然,PHP有自己的历史包袱,设计上有许多不合理之处,但它是为了快速…

    2025年2月25日
    200
  • php算跨平台吗

    跨平台概念是软件开发中一个重要的概念,即不依赖于操作系统,也不依赖硬件环境。 一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。相对而言如果某种计算机语言不用修改代码即可做到高度跨平台,那么此语言就越抽象,硬件控制力就越低,只适合…

    2025年2月25日
    200
  • php常用的算法有哪些

    php相关的基础算法有四个,分别是:冒泡排序法,快速排序法,选择排序法,插入排序法 1:冒泡排序法 介绍:(推荐学习:PHP编程从入门到精通) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,依次比较两个元素,如果他们的顺序错误就…

    2025年2月25日
    200
  • php数组中怎么取值

    php数组 特点:可以存储任意类型的数据,可以不连续,可以是索引的也可以是关联的 什么是索引? 就是常见数组的样式,索引从开始,0,1,2,3,定义数组是直接往里面放值,只个索引自动生成,所以一般从0开始的,这样的数组是索引数组,索引是连续…

    2025年2月25日
    200
  • php数组在内存中如何存储

    数组定义(推荐学习:PHP编程从入门到精通) $arr[]=’a’; 1. 判断变量的类型,系统碰到变量有中括号,系统就认为这是一个数组,将在堆区开辟一块内存空间 2.给a在arr的内存空间,再开辟一个,将a存放到区域里。  立即学习“PH…

    2025年2月25日
    200
  • php数组分为哪两种

    什么是数组? 数组是特殊的变量,它可以同时保存一个以上的值。(推荐学习:PHP编程从入门到精通) 如果您有一个项目列表(例如汽车品牌列表),在单个变量中存储这些品牌名称是这样的: $cars1=”porsche”;$cars2=”BMW”;…

    2025年2月25日
    200
  • php输出函数的区别

    php输出echo、print、print_r、printf、sprintf、var_dump等函数的区别比较 echo,语言结构,非函数,无括号时可以多个值,用逗号分割。整形和字符串,布尔类型会转换成1或空,无返回值(推荐学习:PHP编程…

    2025年2月25日
    200
  • php数组能分页吗

    关于数组的分页函数,用数组进行分页的好处是可以方便的进行联合多表查询,只需要将查询的结果放在数组中就可以了。 以下是数组分页的函数,函数page_array用于数组的分页,函数show_array用于分页函数的操作及显示,需要配合使用。两个…

    2025年2月25日
    200

发表回复

登录后才能评论