似乎这两个特性有一些共同点,比如说,调用一个方法只是在字符串中使用它的名字。有什么不同?有什么反射可以做但变量变量不能做的吗?
更重要的是,这两个特性在 PHP 执行引擎(VM)中的实现有什么区别
似乎这两个特性有一些共同点,比如说,调用一个方法只是在字符串中使用它的名字。有什么不同?有什么反射可以做但变量变量不能做的吗?
更重要的是,这两个特性在 PHP 执行引擎(VM)中的实现有什么区别
他们彼此没有任何关系。
变量变量允许您利用包含字符串的变量来访问不同变量的内容。它们令人困惑,在我的经验中很少使用。
<?php
$first = 'Bob';
$last = 'Smith';
$t = 'first';
echo $t;
echo $$t;
$t = 'last';
echo $t;
echo $$t;
反射是一个通用术语,用于描述语言或库中的设施,让您发现类的结构。这对于试图实现与用户提供的类一起使用或具有高度通用功能的设计模式的框架或组件开发人员通常很有用。如果您正在生成 php 代码或提供记录现有代码的工具,它们也非常有用。
正如您从 api 文档中看到的那样:http: //php.net/manual/en/book.reflection.php这为您提供了在运行时确定类的属性和方法的方法。