Hola a todos,

volevo eliminare un eval che attualmente utilizzo per instanziare classi (componenti del framework). Il problema è che il numero di parametri che passo alle classi (componenti) varia da classe a classe (ovviamente direi)

Il codice con eval che uso è qualcosa tipo:
codice:
$parametersToEvalParts = array();
            
foreach($Parameters as $key => $value)
{
    $parametersToEvalParts[] = "\$Parameters[{$key}]";
}
            
// Esegue il codice PHP tramite eval ed acquisisce il componente
eval("\$componentObject = new {$componentName}(" . implode(', ', $parametersToEvalParts) . ");");
Utilizzo PHP5, quindi evenuali oggetti sono passati di default per riferimento, e quindi questo sistema non mi consuma memoria inutilmente (troppa memoria inutilmente), però comunque un eval cosi rallenta e non permette il caching correttamente del codice ad APC/eAccelerator e simili.

Sono passato quindi ad usare la reflection (la classe ReflectionClass ed il metodo newInstanceArgs che è più veloce di un buon 50%/60% e consuma quasi la metà della memoria) però comunque la reflection è lenta!

Il codice con la reflection è
codice:
// Instanzia la classe ReflectionClass per gestire l'instanziazione
// del componente
$componentObjectRC = new ReflectionClass($componentName);
            
// Instanzia l'oggetto
$componentObject = $componentObjectRC->newInstanceArgs($Parameters);

// Libera la memoria
unset($componentObjectRC);
Qualche suggerimento per metter su un sistema un pò più veloce lo avete?