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
I think runkit is what you're looking for.
http://pecl.php.net/packages/runkit
--Wez.
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
customtime()
function is used. Thistime()
function wouldn't look at
the system clock for the time.Thanks for your help.
Alan
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.
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
customtime()
function is used. Thistime()
function wouldn't look at
the system clock for the time.Thanks for your help.
Alan