adlawson / veval
虚拟评估
1.0.0
2014-09-07 14:03 UTC
Requires
- php: ~5.4
- adlawson/vfs: ~0.9
Requires (Dev)
- adlawson/timezone: ~1.0
- fabpot/php-cs-fixer: ~0.5
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-24 02:42:17 UTC
README
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
一样,使用 **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 许可证 发布。
您可以在 LICENSE
或 https://open-source.org.cn/licenses/mit》中找到此许可证的副本。