Mah qui il discorso è semplicemente per specificare la scelta del driver e parametri di connessione per la classe PDO, non tanto l'uso della classe in se. La differenza sostanziale tra singleton e DI è se scegliere una struttura del tipo:
Codice PHP:
class MyModel{
private $pdo = null;
public function __construct(){
$this->pdo = MyFactory::getPDO(); //ritorna singleton pdo
}
}
//nella pratica
$model = new MyModel();
print_r($model->findAll());
mentre in DI
Codice PHP:
class MyModel{
private $pdo;
public function __construct($myPdoClass){
$this->pdo = $myPdoClass;
}
}
$model = MyContainer::getModel('MyModel'); //MyContainer::getModel istanzia
//un oggetto MyModel e nel costruttore gli passa una reference al pdo di turno
dove, come vedi, nel primo caso MyModel dipende fortemente da MyFactory, nel secondo caso invece MyModel è libero da dipendenze esterne e ci pensa MyContainer ad istanziare MyModel e a passargli la referenza al pdo di turno