Separar os models
Opened this issue · 0 comments
Marlysson commented
Sugestão 1
Transparência no bancos de dados
-
Deixar em uma pasta separada tipo adapters( mysql , postgres ) só os arquivos relacionados à dialeto de banco de dado.
-
Criar classe que usa esses dialetos independentes , onde a pessoa execute uma sql e que seja transparente o dialeto que ta sendo usado.
Usando alguma inteface , por exemplo "Adapter".
class Repository{
public function __construct ( Adapter $dialect ){
$this->database = $dialect;
}
public function selectAll(){
return $this->database->selectAll();
}
Exemplo de uso
$db = new Repository(new MysqlStorage);
$dados = $db->selectAll();
$db = new Repository(new PostgresStorage);
$dados = $db->selectAll();
Sugestão 2
Dependência ( Acoplamento )
- Remover dependência do model user para com os adapters , usar injeção de dependência no contrutor, assim como no "repository" .
Poderia usar interface autenticável .. ou nem tanto.
class Auth {
public function __construct ( Authable $auth ){
$this->obj = $auth;
}
Exemplo de uso
$auth = new Auth(new UserModel);
$auth->login($user);
Ou usar uma conexão com banco.