Sto riscontrando un problema comune in PHP (e nella maggior parte degli altri linguaggi) al momento, in cui i sistemi che sto progettando devono essere aggiornati in più punti per aggiungere nuove funzionalità, mentre mi piacerebbe avere un nucleo, dove Posso aggiungere nuove funzionalità, plug-in ecc. Senza dover toccare il codice principale.
Un esempio potrebbe essere un menu di navigazione, in cui il menu carica gli elementi dalla directory o dallo spazio dei nomi X. Il mio obiettivo è che una volta che io o un altro sviluppatore aggiungo un nuovo file, estende una classe MenuItem, a seconda di quale deve essere, la classe caricando il menu scoprirai questo nuovo file e visualizzalo, senza mai dover toccare il codice di caricamento del menu principale.
Il meglio che ho trovato finora è:
function get_menu_items() {
$menu_items = array();
$raw_files = scandir(DOCUMENT_ROOT . '/menu/menu_items');
foreach($raw_files as $file){
require_once($file);
$class_name = substr($file, 0, -4); // cut away the '.php'
$menu_items []= new $class_name();
}
return $menu_items;
}
Ma quanto sopra sembra sbagliato in quanto non dovrei controllare una directory per l'esistenza di file per le funzionalità! Immagino che questo sia un modello di design comune come wordpress potrebbe essere utilizzato per la scoperta dei plugin? Ho cercato per un po 'ma non sono stato in grado di migliorare quanto sopra! Qualsiasi aiuto sarebbe molto apprezzato !!