在提供使用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语句?
撇开的机制eval
和continue
了一下,我觉得还有一个更根本的一点,使:在编写代码时,“在塞”到另一个系统,你只能做的是系统允许你这样做。
如果钩子系统只是执行您提供给它的代码(无论是通过eval
,还是回调函数或任何其他机制),您就不能使用它来控制主框架代码中的循环流。
如果框架希望您执行此操作,则必须为插件提供一种机制,以向框架发信号通知您要执行的操作-您可以以特定方式注册插件,从回调中返回特定值,设置一个特定的变量,等等。
如果您不想直接修改框架,则唯一的选择是向框架的作者请求这样的功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句