我想有可能使用Boost.PHP来替换一些PHP核心函数逻辑和/或扩展它们.所以我想要的很简单:当一个php脚本调用require_once(dirname(__FILE__) . "/file.php");我希望dirname(__FILE__) . "/file.php"用我的函数接收时,以某种方式创建所需的文件(在我的情况下,转到一些分布式存储),并将该文件返回给PHP解释器,就好像它是需要的一样文件.
是否可以使用Boost.PHP?我怎么能这样做?
我不知道提升,但我怀疑它,因为它们是语言结构,而不是函数.
然而,您可以为流/协议编写自己的包装器(或者定义您自己'mywrapper://path/to/something'的file://包装器,或者您可以覆盖包装器,但后者意味着您必须在覆盖和正常之间保持翻转,否则您无法打开文件文件系统自己:)
要更改核心php函数的beavior,您可以使用runkit扩展名.
bool runkit_function_rename(string $ funcname,string $ newname)
注意:默认情况下,只能删除,重命名或修改用户空间功能.要覆盖内部函数,必须在php.ini中启用runkit.internal_override设置.
请注意,扩展主要用于单元测试,而不是经常用于生产(据我所知).
所以你可以
runkit_function_rename("strlen", "org_strlen");
function strlen($string) {
return org_strlen($string + 1);
}
Run Code Online (Sandbox Code Playgroud)
对于喜欢的东西require或者isset是语言结构,而不是功能看@Wrikken答案(+1)