note 50821 added to function.override-function
| From: | php at undeen dot com | Date: | Thu, 10 Mar 2005 20:07:14 +0000 |
| Subject: | note 50821 added to function.override-function | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-86220@lists.php.net to get a copy of this message | ||
I thought the example was not very helpful, because it doesn't even override the function with
another function.
My question was: If I override a function, can I call the ORIGINAL function within the OVERRIDING
function?
ie, can I do this:
<?php
override_function('strlen', '$string', 'return
override_strlen($string);');
function override_strlen($string){
return strlen($string);
}
?>
The answer: NO, you will get a segfault.
HOWEVER, if you use rename_function to rename the original function to a third name, then call the
third name in the OVERRIDING function, you will get the desired effect:
<?php
rename_function('strlen', 'new_strlen');
override_function('strlen', '$string', 'return
override_strlen($string);');
function override_strlen($string){
return new_strlen($string);
}
?>
I plan to use this functionality to generate log reports every time a function is called, with the
parameters, time, result, etc... So to wrap a function in logging, that was what I had to do.
----
Manual Page -- http://www.php.net/manual/en/function.override-function.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+50821
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+50821&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+50821&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+50821&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+50821&report=yes&reason=useless
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+50821&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+50821&report=yes
Search -- http://master.php.net/manage/user-notes.php