这只是为了好玩,不要尖叫。
我想在运行时重写类的方法内容(我的意思是,不修改文件,只是在内存中替换/编辑代码),这是否可能?
使用反射或其他任何东西?
请不要关闭此问题,请给我一个不同于runkit的答案。
这只是为了好玩,不要尖叫。
我想在运行时重写类的方法内容(我的意思是,不修改文件,只是在内存中替换/编辑代码),这是否可能?
使用反射或其他任何东西?
请不要关闭此问题,请给我一个不同于runkit的答案。
<?php
class MySimpleXML extends SimpleXMLElement {
public function themethodiwanttooverwrite() {
//...
}
}
?>
file_get_contents
,进行所需的更改,然后调用eval
。缺点是你必须基本上创建一个加载器,因为让一个文件加载自身将会是非常麻烦的(或者如果不小心会导致无限循环)。 - Mr. Llamaphp://memory
是一个文件句柄,因此您无法将其交给include
。在这里,您可以使用eval
来实现相同的效果。 (好吧,您可以在这里使用data:
,但是当禁用allow_url_include
时,它受到限制,最好不要使用。) - Charles