似乎这两个特性有一些共同之处,比如,在字符串中使用其名称来调用方法。有什么不同?是否有任何反射可以做但变量变量不能?
更重要的是,PHP执行引擎(VM)中这两个功能的实现之间的区别是什么
答案 0 :(得分:1)
他们没有任何关系。
变量变量允许您利用包含字符串的变量来访问其他变量的内容。它们令人困惑,很少用于我的经验。
<?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这为您提供了在运行时确定类的属性和方法的方法。