adlawson/veval

虚拟评估

1.0.0 2014-09-07 14:03 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:42:17 UTC


README

Virtual Eval

Master branch build status Published version PHP ~5.4 MIT Licensed

Veval 是一种使用虚拟文件系统存储用于评估的代码并随后通过 require 重新调用的 eval 实现。它应该适用于不支持或已禁用本地 eval 的 PHP 安装。

您可以选择任何您喜欢的安装方式,但我推荐使用 Composer

{
    "require": {
        "adlawson/veval": "*"
    }
}

文档

Veval API 以 Veval\ 命名空间函数集合的形式暴露,尽管您可能更喜欢使用 Veval:: 以利用自动加载和命名空间别名(PHP < 5.6)。

<?php

// Evaluate some code
Veval\execute(<<<'EOF'
class Foo {
    public $name;
    public function __construct($name) {$this->name = $name;}
}
EOF
);

// Use your newly evaulated code
$foo = new Foo('bar');
$foo->name; // bar

调试

如果您评估的代码按预期工作,则在内存中存储所有“文件”是完全可以的,但有时读取生成的代码以调试任何问题是有用的。有一些不同的调试函数可供您选择。

<?php

// Debug all evaluated strings
Veval\debug(function ($name, $content) {
    // Debug some things here
});

// Iterate over all evaulated strings
foreach (Veval\iterator() as $name => $content) {
    // Debug some things here
}

// Dump all to path
Veval\dump(sys_get_temp_dir(), 'veval-%s.php');

警告

Eval Warning

eval 一样,使用 **Veval** 评估用户输入被认为是非常危险的。务必小心,以免在系统安全上造成很大的漏洞。

贡献

通过 Pull Request 接受贡献,但必须在考虑合并之前包含通过单元测试。

$ curl -O https://raw.githubusercontent.com/adlawson/vagrantfiles/master/php/Vagrantfile
$ vagrant up
$ vagrant ssh
...

$ cd /srv
$ composer install
$ vendor/bin/phpunit

许可

本库内容由 Andrew Lawson 根据 MIT 许可证 发布。
您可以在 LICENSEhttps://open-source.org.cn/licenses/mit》中找到此许可证的副本。