PHP将字符串编译为字节码而不对其进行评估

时间:2018-01-03 00:00:23

标签: php python

Python(至少CPython和Jython,可能是所有Pythons)都有一个名为compile的函数,可用于将文件编译成字符串或字节码对象。

# foo.py
a = compile("""
print(47)
""", filename="testfile", mode="exec")

exec(a)

运行foo.py会产生:

$ python foo.py
47

PHP(特别是Zend,任何版本)是否以类似的方式将其字节码编译器暴露给用户代码?更具体地说,你可以动态编译字符串而不像eval那样执行它们。

2 个答案:

答案 0 :(得分:0)

我不知道,但你告诉我的是,你可以即兴发挥这种替代方案非常熟悉:

foo.php

<?php
    include('foo.php');
?>

的index.php

@echo off
set parameter=%1
set PHP_BIN="c:\xampp\php\php.exe"
%PHP_BIN% %parameter%

例如:所以在windows cmd下的php cli中:

在任何文件夹中你有index.php和foo.php,其中xampp来自apachefriends.org,安装在c:\ xampp中创建runme.bat

runme index.php

所以从cmd你可以调用index.php的非常简单的cli解释:

{{1}}

同样runme foo.php有相同的结果,我把它放在那里的唯一原因是index.php是用它作为我存储的某种方式的数组列表之间的“代理”,不仅包括foo.php而且包括manny其他并且以这种方式可能成为一种“控制器”,没有太多的修改(如果问题指向由一种控制器排序的任何顺序的代码执行)

47

答案 1 :(得分:0)

如果你想知道PHP是否有编译内置函数来编译PHP代码,那就没有了。 PHP是一种解释型语言,PHP代码需要解释器来运行它,并且解释器具有执行环境。

但是如果你想要实现你的要求,可以通过以下方式实现它:

  1. PHC
  2.   

    phc是PHP的开源编译器,支持插件。此外,它可以用于漂亮打印或混淆PHP代码,作为开发处理PHP脚本的应用程序的框架,或者将PHP转换为XML并返回,从而能够使用XML工具处理PHP脚本。

    1. bcompiler
    2.   

      在专有的PHP应用程序中编码整个脚本   在专有PHP应用程序中编码某些类和/或函数   能够生成可以在客户端桌面上使用的php-gtk应用程序,而无需php.exe。   进行PHP到C转换器的可行性研究

      3。Project Zero

      它支持PHP编译。