Gestisco e aggiungo funzionalità su base freelance a un sito Web scritto in PHP. L'applicazione è stata avviata in PHP4 da un programmatore junior nel 2006 e presenta alcuni modi di fare le cose molto insicuri e non mantenibili, che sto cercando di correggere col passare del tempo. Se il cliente è d'accordo, una delle prime cose che vorrei fare è aggiungere un opportuno livello di database di qualche tipo.
L'accesso al database corrente è simile a questo:
if (!function_exists('my_query')) {
function my_query($query) {
if ($query=='disabled') return false;
global $last_insert_id,$dbconn,$dbase;
$result=mysql_query($query,$dbconn) or die('ERROR: '.mysql_error($dbconn).'<br />'.$query);
$last_insert_id=mysql_insert_id($dbconn);
return $result;
}
}
C'è anche una funzione per rendere array dai dati restituiti.
if (!function_exists('spawnarray')) {
function spawnarray($result)
{
$i = 0;
if ($result != "") {
if (mysql_num_rows($result) > 0) {
while($result_obj[$i] = mysql_fetch_object($result)) {
$sp_result[$i]=$result_obj[$i];
$i++;
}
return $sp_result;
}
}
}
}
Queste due funzioni sono fondamentalmente il livello del database e le query SQL sono costruite al volo per tutte le posizioni.
Quindi la mia domanda è: come posso iniziare a introdurre l'astrazione del database nel mix? Mi piacerebbe passare a PDO per motivi di sicurezza e facilità di utilizzo, ma forse c'è un modo migliore per andare?
Ho già spostato il progetto in Composer per alcune delle sue dipendenze (alcuni sono progetti morti, che è un altro problema) quindi forse un ORM come Doctrine sarebbe la strada da percorrere? Ciò potrebbe significare spostare il sito web in OOP in una volta sola: una prospettiva scoraggiante e un sicuro no-go dal cliente.