Problema
In Codeigniter (framework PHP), sto cercando di creare una funzione helper che inserirà un comando ActiveRecord (per MySQL) in una catena di chiamate ActiveRecord esistenti. Il ragionamento per questo è che gli attuali comandi ActiveRecord disponibili non sono abbastanza affidabili e producono risultati diversi a seconda di quali parametri vengono passati.
Ad esempio:
$param = "";
$this->db->where('field', "");
produce
WHERE 'field' = ""
Ciò fornirebbe un set di risultati in cui sono stati restituiti solo campi vuoti .
Questo non è sempre il comportamento previsto, in quanto l'input proviene da un modulo Web e può essere il risultato di nessuna query specifica inviata, quindi tutti i risultati dovrebbero essere restituiti .
Soluzione tentata
Quello che ho deciso di inventare, era un metodo di supporto che prendesse una serie di input sconosciuti e restituisse un set di risultati che corrispondesse al mio comportamento desiderato (ad esempio, restituisce tutti i risultati o restituisce nessuno).
Utilizzando i casi di test e un metodo di test per astrarre l'insieme desiderato di input e output, speravo di produrre un metodo facile da chiamare per forzare i risultati del database nel mio comportamento desiderato. Ciò sarebbe più facile allora dire, forzare l'input in un tipo atteso e quindi utilizzare il comportamento inaffidabile dei comandi ActiveRecord di Codeigniter.
La mia preoccupazione principale, tuttavia, è che la mia funzione di aiuto potrebbe cercare di fare troppo: il mio collega l'ha descritto come un metodo magico che prende qualsiasi cosa e può avere dettagli di implementazione arcani. Sarebbe quindi meno leggibile rispetto alla convenzione ActiveRecord (che è più nota) e più difficile da mantenere.
La mia funzione è il modo migliore per farlo o ci sono alternative migliori là fuori?