Ciao Santino83,
Premetto che ho moltissima considerazione di te e ti ringrazio per lo sforzo che ogni santa volta fai per le mie assurde domande.
Volevo illustrarti un la mia situazione e le considerazioni fatte in seguito alla lettura delle tue risposte.
Attualmente sto utilizzando la versione 5.1.6 di php (molto molto vecchia).
La mia applicazione ha web diverse decine di pagine web.
Nessuna applicazione di pattern, o standard oop.
Forma totalmente procedurale (a volte molto disorganizzata).
Ovviamente a questo punto sta iniziando ad essere difficile manutenere tutto.
Un programmatore con i @@ ovviamente rifarebbe tutto da 0 o quasi.
Questo ovviamente non me lo posso permettere per ovvi motivi.
Ho guardato approfonditamente doctrine e con tutta franchezza ci ho capito veramente veramente poco.
E' vero le classi, le interfacce ecc le ho studiate sulla carta (Animale -> Mamminefero -> Cavallo : Nitrisce.... soliti esempi inutili).
Ma non avendo una conoscenza approfondita ovviamente è impossibile capire a fondo le potenzialità di doctrine peggio ancora se andiamo a astrarre totalmente l'applicazione dalla base dati.
Già il fatto di utilizzare una vecchia versione di php mi limita dal fatto di non poterlo implementare a fondo, e detto con tt franchezza non vorrei implementare una cosa che non capisco.
Preferirei iniziare con un piccolo passo ovvero l'introduzione di una classe database per l'utilizzo di pdo (abbandonando definitivamente mysql_connection) soprattutto perchè mi sono reso conto di avere necessità delle transazioni.
(puoi solo immaginare i problemi di insert o update che posso avere senza nessun controllo e gestione di errori)
La costruzione di una classe per una gestione corretta dei dati in input dell'utente.
Il prossimo sviluppo di due macro oggetti che concettualmente sono presenti nella mia applicazione per semplificarmi la vita :
Utenti
Interventi : Quest'ultimo possibilmente sviluppandolo socondo il pattern mvc
So che sembra un pastrocchio nel senso che nello sviluppo avro connessione mysql, connessione pdo, classi, forma procedurale, e una classe aderente al pattern mvc.
Ma mi è impossibile andare ad implementare e manutenere contemporanemento.
Dato questa seeemplice premessa pensavo di iniziare in questo modo :
Codice PHP:
class MyPDO extends PDO {
public function __construct ($file = 'config/my_setting.ini') {
if (!$settings = parse_ini_file($file, TRUE)) throw new PDOException('Unable to open ' . $file . '.');
$dns = $settings['database']['driver'] .
':host=' . $settings['database']['host'] .
((!empty($settings['database']['port'])) ? (';port=' . $settings['database']['port']) : '') .
';dbname=' . $settings['database']['schema'];
parent::__construct($dns, $settings['database']['username'], $settings['database']['password']);
self::setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
}
Classe di partenza pdo.
Mi piacerebbe integrarla per avere un singolo punto di accesso per il recupero dei parametri e per il settaggio dei della modalità di errore.
Ho mantenuto estensione della classe pdo dato che ho trovato la stessa forma nel listato di doctrine.
Sotto il tuo consiglio ho esternalizzato la gestione dell'errore (come farò poi in tutte le classi) fino a che non padroneggero il pattern observer (ottimo consiglio).
Ti invito a suggerirmi un processo migliore per il settaggio dei parametri per la connessione che ritine più corretto.
Nelle mie pagine avrò percui la seguente struttura :
Codice PHP:
/*-------------INCLUDE CLASS---------------*/
include "class/mypdo.class.php";
/*-------------INCLUDE CLASS---------------*/
try{
$db = new MyPDO();
}catch(PDOException $e){
//Gestione dell'errore di connessione
exit();
}
try{
$sql = $db->prepare('SELECT user FROM utent');
$sql->execute();
foreach($sql->fetchAll() as $rk){
echo $rk['user']. '
';
}
}catch (PDOException $e) {
//Gestione dell'errore
}
Per le altre classi (Controllo parametri in input, utenti, interventi) effettuerò altre Wall of Text mettendo alla prova la vostra grande pazienza...
Già queste cose porterebbero un miglioramente inimmaginabile alla mia applicazione.
Ti autorizzo a mandarmi a quel paese nel caso il mio approccio sia totalmente errato e a suggerirmi un approccio semplicistico per poter iniziare a fare le cose con più ordine.