SHENOISZ/Weblitephp

Separar os models

Opened this issue · 0 comments

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.