как «внедрить» встроенные функции php - PullRequest
2 голосов
/ 10 июля 2011

Как я могу изменить возвращаемое значение встроенной функции php, не создавая новую функцию с другим именем и не переименовывая все используемые функции с предыдущим именем в новое?например,

function time() {
    return time()-1000;
}

Конечно, это не пройдет, не так ли что-то вроде «функция time () расширяет время () {}» или подобное?

Ответы [ 3 ]

5 голосов
/ 10 июля 2011

С расширением APD PECL вы можете переименовать и переопределить встроенные функции.

//we want to call the original, so we rename it
rename_function('time', '_time()');

//now replace the built-in time with our override
override_function('time', '', 'return my_time();');

//and here's the override
function my_time($){
        return _time()-1000;  
}

APD предназначен для целей отладки, так что это не метод, который вы действительно должны рассмотреть для производственного кода.

2 голосов
/ 10 июля 2011

Вы не можете сделать это.

Рассмотрите возможность использования date_default_timezone_set() и setlocale() тоже

1 голос
/ 10 июля 2011

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

То, что вы пытаетесь достичь, является неправильным решением проблемы !!!

Некоторые примеры

Вместо имени функции time() вы можете сделать cTime() (пользовательское время) Так же, как я создаю свою собственную функцию для print_r() как printr() для печати массива на моем пути

или что-то вроде

class FUNCTIONS {
    public function time() {
        return time()-1000;
    }
}
//Now access using
FUNCTIONS::time();
...