PHP have PECL (PHP Extension & Community Library) function to override built-in functions by replacing them in the symbol table.
bool override_function ( string $function_name , string $function_args , string $function_code )
-
<?php
-
override_function(‘strlen’, ‘$string’, ‘return override_strlen($string);’);
-
function override_strlen($string){
-
}
-
?>
The above function “override_function()” require APD i.e. Advanced PHP Debugger.
We can find more about APD here…
http://pecl.php.net/package/apd
Linux users can install apd using below command
# pecl install apd
There is an alternate way to override PHP functions, we can use below class “override” to override any built-in PHP function if PECL is not installed on server
-
<?php
-
$or = new override ();
-
$or->override_function(‘strlen’, ‘override_strlen‘, ‘return override_strlen($string);’);
-
function override_strlen($string){
-
}
-
?>
<?php
$url = 'http://www.svnlabs.com'; $override = new override();$override->override_function('file_get_contents','fileGetContents',$url); if ($over_func_name = $override->override_check('file_get_contents')) { $result=call_user_func($over_func_name, $url); }function fileGetContents($url){/// statements}?>PHP Function OverRide Class
<?php class override { function override_function($override, $function, $include) { if ($include) { $this->includes[$override] = $include; } } $this->functions[$override] = $function; } function override_check($override) { include_once($this->includes[$override]); } return $this->functions[$override]; } else { return false; } } else { return false; } } } ?>
Make a habit of creating things modular, that means “pluggable” and “unpluggable”.
<?phpclass override {var $functions = array();var $includes = array();function override_function($override, $function, $include) {if ($include) {$this->includes[$override] = $include;}else if (isset($this->includes[$override])) {unset($this->includes[$override]);}$this->functions[$override] = $function;}function override_check($override) {if (isset($this->includes[$override])) {if (file_exists($this->includes[$override])) {include_once($this->includes[$override]);}if (function_exists($this->functions[$override])) {return $this->functions[$override];} else {return false;}} else {return false;}}}?>

Joe Doe
December 7, 2010 at 3:59 pm
Your alternate way to override PHP functions doesn’t work…
Did you even test it?
How do you think that could override built-in PHP functions?
admin
December 9, 2010 at 1:04 pm
Please use…
$or->override_function(’strlen’, ‘override_strlen‘, ‘return override_strlen($string);’);
Thanks