Sto facendo un progetto PHP MVC usando il codice di accensione. Ho due modelli, a e b.
Ogni classe contiene quattro funzioni (inserisci, elimina, aggiorna e visualizza) e le loro implementazioni sono quasi le stesse una con l'altra. Un amico ha suggerito di inserire versioni generiche delle quattro funzioni all'interno di una classe di utilità ei due modelli possono accedere alla loro funzione. Ad esempio, ecco l'implementazione generica di insert.
public function insert($tableName, $columns, $preds = null)
{
// call code igniter's insert function
}
// do the same with delete, update and view
Tuttavia, essendo stato introdotto per programmazione diretta dei dati prima e dopo di recente ho scoperto che php può avere array di funzioni, penso che possiamo migliorarlo.
Quello che vorrei fare è: su ogni classe, creerò un array globale che contiene le quattro funzioni CRUD di accensione del codice specifiche per la classe con i tasti "insert", "add", "delete", "update".
Invece di creare quattro funzioni per ogni operazione CRUD, creerò una funzione di utilità e una funzione di esecuzione generale per ogni classe.
Nota: sono estremamente nuovo su php, alcuni dei codici php potrebbero non funzionare. Non l'ho ancora implementato direttamente.
// in the utility class
public function execute($dataFunctions, $op, $tableName, $columns)
{
// this will not work, I am not yet familiar with putting functions inside an array
$dataFunctions['op']($tableName,$columns);
}
// on class a
public function execute($op, $columns)
{
// dataFunctions is the name of the global array
utils->execute($dataFunctions,$op,"a",$colums)
}
// same with class b
Il fatto è che non sono completamente sicuro che questa sia una buona idea. Non l'ho mai fatto prima. Potrei non essere a conoscenza di eventuali inconvenienti. Dovrei preferire il modo con la gamma di funzioni? O dovrei limitarmi a implementare le quattro funzioni crude?