在我的单元测试中,我想查看php的内置file_get_contents()方法的行为。
有没有办法在PHP中存根本机方法(例如file_get_contents()或print_r())等等?
答案 0 :(得分:3)
如果用“stub”表示替换,则有一个PHP override_function函数;但它是PECL的一部分。你也可以rename他们。
答案 1 :(得分:2)
可以使用runkit。使用runkit_function_copy和runkit_function_redefine函数复制和重新定义函数。您应该将runkit.internal_override ini-setting设置为1以修改内部函数。
答案 2 :(得分:0)
你不清楚'存根'是什么意思。
您的意思是获取函数的doc,例如:
/**
* (PHP 5 >= 5.1.0)<br/>
* Sets the default timezone used by all date/time functions in a script
* @link http://php.net/manual/en/function.date-default-timezone-set.php
* @param timezone_identifier string <p>
* The timezone identifier, like UTC or
* Europe/Lisbon. The list of valid identifiers is
* available in the .
* </p>
* @return bool This function returns false if the
* timezone_identifier isn't valid, or true
* otherwise.
*/
function date_default_timezone_set ($timezone_identifier) {}
答案 3 :(得分:0)
从PHP-5.3's namespace fallback policy开始,您可以覆盖非全局命名空间上下文中对非限定函数名的调用:
对于函数[...],如果命名空间函数[...]不存在,PHP将回退到全局函数[...]。
即。例如,调用非限定函数名称file_get_contents()
。可以通过提供foo
来覆盖名称空间foo\file_get_contents()
。
我最近创建了库PHP-Mock,为time()
等非确定性PHP函数提供了模拟。