Se utilizzo il database creando una scheda con i driver, inizialo in una classe astratta ed estendo la classe astratta al modello richiesto. Quindi utilizzare la dichiarazione di query semplice. In questo modo:
namespace My-Model\Model\DB;
abstract class MysqliDB {
protected $adapter;
public function __construct(){
$this->adapter = new \Zend\Db\Adapter\Adapter(array(
'driver' => 'Mysqli',
'database' => 'my-database',
'username' => 'root',
'password' => ''
));
}
}
E usa una classe astratta di database come questa nei miei modelli:
class States extends DB\MysqliDB{
public function __construct(){
parent::__construct();
}
protected $states = array();
public function select_all_states(){
$data = $this->adapter->query('select * from states');
foreach ($data->execute() as $row){
$this->states[] = $row;
}
return $this->states;
}
}
Sono nuovo nel framework zend, prima di avere esperienza di lavoro in YII e Codeigniter. Mi piace l'object oriented in zend quindi voglio usarlo in questo modo. E non voglio usarlo attraverso il servizio di localizzazione di qualcosa del genere:
public function getServiceConfig(){
return array(
'factories' => array(
'addserver-mysqli' => new Model\MyAdapterFactory('addserver-mysqli'),
'loginDB' => function ($sm){
$adapter = $sm->get('addserver-mysqli');
return new LoginDB($adapter);
}
)
);
}
Nel modulo. Sono d'accordo con questo approccio?