Stub PHP нативные методы - PullRequest
       75

Stub PHP нативные методы

2 голосов
/ 31 марта 2010

В моем модульном тесте я пытаюсь заглушить поведение встроенного в php метода file_get_contents ().

Есть ли способ заглушить собственные методы в PHP (такие как file_get_contents () или print_r ()) и тому подобное?

Ответы [ 4 ]

3 голосов
/ 31 марта 2010

Если под "заглушкой" вы подразумеваете замену, есть функция PHP override_function ; хотя это часть PECL. Вы также можете переименовать их.

2 голосов
/ 31 марта 2010

Это возможно с runkit . Используйте функции runkit_function_copy и runkit_function_redefine для копирования и переопределения функций. Вам следует установить ini-setting runkit.internal_override на 1, чтобы изменить внутренние функции.

0 голосов
/ 27 ноября 2014

Поскольку Политика восстановления пространства имен в PHP-5.3 , вы можете переопределить вызовы неквалифицированных имен функций в неглобальном контексте пространства имен:

Для функций […] PHP вернется к глобальным функциям […], если функция пространства имен […] не существует.

т.е. вызов неквалифицированного имени функции file_get_contents(), например, пространство имен foo можно переопределить, указав foo\file_get_contents().


Я недавно создал библиотеку PHP-Mock , которая предоставляет макеты для некоторых недетерминированных функций PHP, таких как time().

0 голосов
/ 31 марта 2010

Вам не ясно, что означает «заглушка».

Вы хотите получить документацию для таких функций, как:

/**
 * (PHP 5 &gt;= 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) {}

...