在我的单元测试中,我正在寻找存根的内置file_get_contents()方法的行为。存根PHP本地方法
有没有办法在PHP中存储本地方法(如file_get_contents()或print_r())等?
在我的单元测试中,我正在寻找存根的内置file_get_contents()方法的行为。存根PHP本地方法
有没有办法在PHP中存储本地方法(如file_get_contents()或print_r())等?
你不清楚'stub'是什么意思。
你的意思是让文档的功能,如:
/**
* (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) {}
?
有可能与runkit。使用runkit_function_copy和runkit_function_redefine函数来复制和重新定义函数。您应该将runkit.internal_override ini-setting设置为1以修改内部函数。
如果用“存根”表示替换,则有一个PHP override_function函数;但它是PECL的一部分。你也可以rename他们。
由于PHP-5.3's namespace fallback policy您可以在非全局命名空间范围内覆盖到不合格的函数名称调用:
对于函数[...],PHP将回落至全局函数[...]如果一个命名空间功能[...]不存在。
I.e.例如调用非限定函数名称file_get_contents()
。命名空间foo
可以通过提供foo\file_get_contents()
来覆盖。
我最近创建的库PHP-Mock提供嘲笑像time()
一些非确定性的PHP函数。
这个问题可能会帮助你http://stackoverflow.com/questions/2326835/redefine-built-in-php-functions – 2010-03-31 13:43:09
是的。重复。 – Gordon 2010-03-31 13:54:30