1

我正在使用通过 pecl 从 apd.so 库安装的 ovverride_function

它似乎没有按预期工作

这是我的脚本

function my_require($path) {
    echo "HELLO\n";
    echo $path;
}


$b = override_function('require', '$path', 'return my_require($path);');
var_dump($b);
require './index.php';

我期望看到的是输出

bool(true)
HELLO
./index.php

相反,我得到了

bool(true)

Warning: require(./index.php): failed to open stream: No such file or directory in /var/www/test/script/test.php on line 14

因此,即使该函数似乎可以工作(bool true),require 函数仍然充当旧函数。

任何想法?

4

1 回答 1

2

require不是一个函数,它是一个类似functionor的语言结构echo。尝试调用require index.php(不带()),它在调用普通函数时仍然可以正常工作()。文档没有明确说明它是,但它列在“控制结构”下,所以这就是为什么override_function不适用于这个require(或任何其他语言结构)。

于 2012-10-05T11:30:28.463 回答