php eval()中的语句

用户名

在提供使用eval()实现的钩点的PHP框架中,我试图从eval()调用中中断或继续循环。这就是我正在尝试的

框架循环像

...
for( $i = 0; $i < 10; $i++ ) {
    // framweork code here ...
    eval( $plugin_code );
    // framweork code here ...
}
...

$ plugin_code包含PHP代码-在此示例案例中

if( $i == 5 ) {
    continue;
}

导致此错误

PHP Fatal error:  'continue' not in the 'loop' or 'switch' context

如果确实eval()仅对表达式求值而不能对语句求值-那么如何在eval()中实现continue / break语句?

即时通讯

撇开的机制evalcontinue了一下,我觉得还有一个更根本的一点,使:在编写代码时,“在塞”到另一个系统,你只能做的是系统允许你这样做

如果钩子系统只是执行您提供给它的代码(无论是通过eval,还是回调函数或任何其他机制),您就不能使用它来控制主框架代码中的循环流。

如果框架希望您执行此操作,则必须为插件提供一种机制,以向框架发信号通知您要执行的操作-您可以以特定方式注册插件,从回调中返回特定值,设置一个特定的变量,等等。

如果您不想直接修改框架,则唯一的选择是向框架的作者请求这样的功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章