Overriding Default Functions

php.internals

Alan Cox

20 years ago
Hello - Is there a way to build an extension that overrides the default behavior of a built-in PHP function? Would it be possible to add an extension that removes a PHP function, so that I could redefine it in my PHP code? What I want to do is override the time calculations. We are running unit tests on a testing server that are dependent on time. For instance, there is one behavior before the 15th of the month and another one on or after the 15th. I'm not able to change the system time, since this testing server is used by a lot of people. What I'd like to be able to do is load a module in the unit test that makes it so that a custom time() function is used. This time() function wouldn't look at the system clock for the time. Thanks for your help. Alan

Wez Furlong

20 years ago
I think runkit is what you're looking for. http://pecl.php.net/packages/runkit --Wez. On 11/15/05, Alan Cox <acox@broadwick.com> wrote:

Sara Golemon

20 years ago
Specifically, you want to enable the (under-documented) runkit.internal_override INI option. It's mentioned on the reference page, but with no explanation of what it does. I need to make a language-snippet for that at some point.... This was added in version 0.6 (prior versions could only override user-defined functions/methods). If you enable this option (PHP_INI_SYSTEM only) you can use runkit_function_redefine() to replace the builtin time() with something else. -Sara ----- Original Message ----- From: "Wez Furlong" <kingwez@gmail.com> Newsgroups: php.internals To: <acox@broadwick.com> Cc: <internals@lists.php.net> Sent: Tuesday, November 15, 2005 4:07 PM Subject: Re: [PHP-DEV] Overriding Default Functions I think runkit is what you're looking for. http://pecl.php.net/packages/runkit --Wez. On 11/15/05, Alan Cox <acox@broadwick.com> wrote: