La domanda è essenzialmente sullo sviluppo di plugin php caricabili dinamicamente in php che non causino interferenze con altri plugin o il codice principale.
L'unico modo che conosco che richiedono di ridisegnare il class_lib.php originale e creare una classe 'Plugin' che avrebbe agito come una classe proxy che su ogni funzione chiamata di metodo/eseguire una nuova istanza php e passare lungo gli argomenti della funzione con una chiamata json_decode e quindi echo la risposta con json_encode.
function proxyExternalFunction($fileName, $functionName, $args, $setupStatements = '') {
$output = array();
$command = $setupStatements.";include('".addslashes($fileName)."');echo json_encode(".$functionName."(";
foreach ($args as $arg) {
$command .= "json_decode('".json_encode($arg)."',true),";
}
if (count($args) > 0) {
$command[strlen($command)-1] = ")";//end of $functionName
}
$command .= ");";//end of json_encode
$command = "php -r ".escapeshellarg($command);
exec($command, $output);
$output = json_decode($output,true);
}
questo dovrebbe essere fatto per ogni singola funzione chiamata di metodo/via una classe proxy ... non è così efficiente, e non avrebbe mai funzionato per gli array oggetti/associativi che detengono i riferimenti a risorse o altra variabile unserializable Riferimenti.
Un'altra opzione più efficiente sarebbe http://www.php.net/runkit che consente di interagire con un'istanza php con esecuzione prolungata.
Dovresti spiegare cosa stai cercando di realizzare, o più precisamente perché. È possibile semplicemente reinizializzare l'oggetto con lo scaricamento e il ricaricamento della definizione della classe. – mario
Ricaricherà la sceneggiatura? – Rob
Perché una "nuova istanza MyClass()" non funzionerà? – lepe