override_function

(PECL apd:0.2-1.0.1)

override_function — Overrides built-in functions

Описание

bool override_function ( string $function_name , string $function_args , string $function_code )

Overrides built-in functions by replacing them in the symbol table.

Список параметров

function_name

The function to override.

function_args

The function arguments, as a coma separated string.

Usually you will want to pass this parameter, as well as the function_code parameter, as a single quote delimited string. The reason for using single quoted strings, is to protect the variable names from parsing, otherwise, if you use double quotes there will be a need to escape the variable names, e.g. \$your_var.

function_code

The new code for the function.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 override_function() example

<?php
override_function
('test''$a,$b''echo "DOING TEST"; return $a * $b;');
?>

Коментарии

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.
2005-03-10 14:07:11
http://php5.kiev.ua/manual/ru/function.override-function.html
Автор:
There is not chance to override 2 or more functions, because of the error:
Fatal error: Cannot redeclare __overridden__()
2008-10-24 03:34:05
http://php5.kiev.ua/manual/ru/function.override-function.html
Автор:
Please note that this function (as of v1.0.1 in PHP 5.3) will <b>not</b> override some important built-in "functions". Specifically, those which are actually statements/keywords, such as:

    require
    include
    require_once
    include_once
    echo
    print

I was hoping to use it to trace the chains of require/include activity among files in a large legacy project, but it seems APD will not do what I need.
2014-02-11 23:11:14
http://php5.kiev.ua/manual/ru/function.override-function.html
Overriden function name becomes __overridden__(). That's why you can't override two function, and that's how you can use the original function in the override.
2014-06-20 15:14:25
http://php5.kiev.ua/manual/ru/function.override-function.html
Yes you can if you rename the overridden function. So you first rename original function, then override it and finally rename the overridden one, something like this:

rename_function('feof', 'real_feof');
override_function('feof', '$handle', 'return true;');
rename_function("__overridden__", 'dummy_feof');
2015-01-14 14:30:18
http://php5.kiev.ua/manual/ru/function.override-function.html
Of course you can't overwrite "functions" like require_once or print as they are not really a function but a language construct.
2015-09-05 00:47:04
http://php5.kiev.ua/manual/ru/function.override-function.html
Автор:
Maybe it's better to use overwritten function inside the override to code something like this :
<?php
rename_function
('myFunction','original_myFunction');
override_function('myFunction','$arg,…,$argN','return override_myFunction($arg,…,$argN);');
?>

You may then give somehow "inheritance" to override_myFunction …
As a parent :
<?php
function override_myFunction($arg,,$argN)
{   
$result=original_myFunction($arg,,$argN));
     
/* CODE that manipulates the result */
     
return $result;
}
?>

As a child :
<?php
function override_myFunction($arg,,$argN)
{   
/* CODE that manipulates the arguments */
     
return original_myFunction($arg,,$argN));
}
?>
2015-11-03 12:37:26
http://php5.kiev.ua/manual/ru/function.override-function.html
Автор:
You can find  Excepción - Call to undefined function override_function()
due to Function override_function is part of PECL Extension.

Configure PECL
2017-04-26 12:18:03
http://php5.kiev.ua/manual/ru/function.override-function.html

    Поддержать сайт на родительском проекте КГБ