Daily Shaarli

All links of one day in a single page.

March 26, 2013

De la difficulté de patcher une application PHP :/

-.- En Python, c'est super simple :/

En PHP faudrait que chaque fonction soit référencée dans un array du style array('functionName' => 'functionName'); mais j'ignore quel serait l'impact sur les performances :/
Et quand bien même, ça a encore des limitations.

En Python:

L'application:

def a():
pass

And you can call it normally

Le patch:

def a():

Do some more stuff

a() # Then call "a" normally

(C'est le principe d'un décorateur quoi, mais je pourrais aussi simplement remplacer la fonction sans appeler l'ancienne fonction)

En PHP:

function lol()
{

}

$functions = array('lol' => 'lol');

And you call it using $functions'lol';

Le patch:

$functions['lol'] = function() use($functions)
{
static $lol;
if($lol === null) $lol = $functions['lol'];

# Do some more stuff …

$lol();

};

To call it, it's the same than before $functions'lol';

EDIT: Il existe bien des techniques pour créer des "Décorateurs" en PHP (aka surcharger une fonction) (à base de POO) mais ... meh. J'accroche pas perso, j'trouve ça lourd.