Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xKobrax

Crud Genérico

Recommended Posts

"Estou dizendo isso porque você não entendeu, você acha que entendeu, o que não significa que entendeu. Entendeu?" - Hatake Kakashi

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, adicionando algo à discussão, após definido como vai ser o acesso a banco, fica bem simples implementar um crud básico:

class CRUD {
private $adapter;
private $tableName;

public function __construct(DbAdapter $adapter, $tableName) {
	$this->adapter = $adapter;
	$this->tableName = $tableName;
}

public function insert(array $data) {
	foreach($data as &$each) {
		$each = $this->adapter->quote($each);
	}

	$sql = 'INSERT INTO '
		 . $this->tableName
		 . '(' . join(', ', array_keys($data)) . ')'
		 . ' VALUES(' . join(',', $data) . ')';
	return $this->adapter->query($sql);
}

public function update(array $data, $cond) {
	$set = array();
	foreach($data as $key => $each) {
		$set[] = $key . ' = ' . $this->adapter->quote($each);
	}

	$sql = 'UPDATE '
		 . $this->tableName
		 . " " . join(', ' . $set)
		 . ' WHERE ' . $cond;
	return $this->adapter->query($sql);
}

public function delete($cond) {
	$sql = 'DELETE FROM '
		   . $this->tableName
		   . ' WHERE ' . $cond;
	return $this->adapter->query($sql);
}

public function select() {
	return $this->adapter->createSelect();
}
}

 

Note que as sentenças INSERT, UPDATE e DELETE são praticamente idênticas na maioria dos SGBDRs, então não precisamos manter isso no adapter.

Entretanto, uma sentença SELECT, que normalmente pode ser complexa, precisa de uma implementação para cada SGBD, assim, seu adapter deve retornar um objeto select específico para aquele SGBD, ex.: Select_MySQL, Select_PostgreSql, etc.

 

O método query de fato executa o $sql montado. Você pode alterar um pouco para dar suporte a prepared statements.

 

É importante que cada adapter possua um método quote, que coloca a maioria dos tipos de dados (char, varchar, date, etc...) entre aspas. Alguns SGBDs utilizam aspas simples, enquanto outros, aspas duplas.

 

O basicão é isso aí... Agora você se vira pra melhorar :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.