【发布时间】:2018-01-03 00:00:23
【问题描述】:
Python(至少是 CPython 和 Jython,可能是所有 Python)有一个名为 compile 的函数,可用于将文件编译为字符串或字节码对象。
# foo.py
a = compile("""
print(47)
""", filename="testfile", mode="exec")
exec(a)
运行foo.py 产生:
$ python foo.py
47
PHP(特别是 Zend,任何版本)是否以类似的方式向用户代码公开其字节码编译器?更具体地说,您可以动态编译字符串而不像eval 那样执行它们吗?
【问题讨论】:
-
不是没有像上面这样的扩展,但是因为 python 中的 exec 就像 PHP 中的 eval 一样,你可以创建一个 compile() 函数来返回你给它的内容:/,传递它 PHP 代码并返回相同的字符串,将其存储在变量中,然后使用 eval。所以本质上和你用 python 做的一样。您可以将 php 存储在您知道的变量中吗?