Ir para conteúdo

POWERED BY:

Arquivado

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

Lucas Cardial

Qual a vantagem de utilizar uma Classe CRUD para operações SQL?

Recommended Posts

Como o título do tópico já diz, gostaria de saber qual a vantagem...

Particularmente vi um pouco mais de complicações ao criar uma Classe CRUD PDO, que apenas criar funções com o mesmo resultado.

 

Veja esta minha classe:

<?php 

/*
 * Classe para operações CRUD na tabela sgt_global 
 */

	class globalCrud
	{
		/*
		 * Atributo para conexão ao banco de dados
		 */
		private $pdo = null;
		
		/*
	 	 *Atibuto estático para instanciar a própria classe
		 */
		private static $globalCrud = null;
		
		/*
		 * Construtor da Classe como private
		 * @param $conn - Conexão com o banco de dados
		 */
		private function _construct($conn)
		{
			$this->pdo = $conn;
		}
		
		/*
		 * Método estático para retornar um objeto globalCrud
		 * Verifica se já existe uma instância desse objeto, caso não, instância um novo
		 * @param $conn - Conexão com o banco de dados
		 * @return $globalCrud - Instância do Objeto globalCrud
		 */
		
		public static function getInstance($conn)
		{
			if(!isset(self::$globalCrud)):
				self::$globalCrud = new globalCrud($conn);
			endif;
			return self::$globalCrud; 
		}
		
		/*
		 * Método para inclusão de novos registros
		 * @param $user - Nome de usuário
		 * @param $mail - E-mail do usuário
		 * @param $pass - Senha do usuário
		 * @param $userlevel - Nível de credibilidade do usuário
		 * @param $empresaid - Empresa do usuário
		 * @param $userstatus - Estatus de logon do usuário
		 * @param $empresastatus - Status de logon da empresa
		 */
		 
		 public function newUser($user, $mail, $pass, $userlevel, $empresaid, $userstatus, $empresastatus)
		 {
		 	if(!empty($user) and !empty($mail) and !empty($pass) and !empty($userlevel) and !empty($empresaid) and !empty($userstatus) and !empty($empresastatus))
			{
				try
				{
					$sql = 'INSERT INTO glob.users (`User`,`Mail`,`Pass`,`UserLevel`,`EmpresaID`,`UserStatus`,`EmpresaStatus`)VALUES(:user,:mail,:pass,:userlevel,:empresaid,:userstatus,:empresastatus)';
					$stm = $this->pdo->prepare($sql);
					$param = array(
						':user'				=>	$user,
						':mail'				=>	$mail,
						':pass'				=>	$pass,
						':userlevel'		=>	$userlevel,
						':empresaid'		=>	$empresaid,
						':userstatus'		=>	$userstatus,
						':empresastatus'	=>	$empresastatus
					);
					
					$stmt->execute($param);
					return 'Dados inseridos com sucesso!';	
				}
				catch(PDOException $e)
				{
					return 'Erro na linha: '.$e->getLine();
				}	
				
			}
		 	
			
		 }
	}
	



 ?>

Quando poderia ser resumido em apenas uma função:

function newUser($user, $mail, $pass, $userlevel, $empresaid, $userstatus, $empresastatus)
		 {
		 	if(!empty($user) and !empty($mail) and !empty($pass) and !empty($userlevel) and !empty($empresaid) and !empty($userstatus) and !empty($empresastatus))
			{
				try
				{
					$sql = 'INSERT INTO glob.users (`User`,`Mail`,`Pass`,`UserLevel`,`EmpresaID`,`UserStatus`,`EmpresaStatus`)VALUES(:user,:mail,:pass,:userlevel,:empresaid,:userstatus,:empresastatus)';
					$stm = $this->$pdo->prepare($sql);
					$param = array(
						':user'				=>	$user,
						':mail'				=>	$mail,
						':pass'				=>	$pass,
						':userlevel'		=>	$userlevel,
						':empresaid'		=>	$empresaid,
						':userstatus'		=>	$userstatus,
						':empresastatus'	=>	$empresastatus
					);
					
					$stmt->execute($param);
					return 'Dados inseridos com sucesso!';	
				}
				catch(PDOException $e)
				{
					return 'Erro na linha: '.$e->getLine();
				}	
				
			}
		 	
			
		 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da forma que está apresentado, não há "tanta vantagem", pois não está modelado para um maior reúso.

 

globalCrud é um nome terrível, viola boas práticas, e está misturando um Singleton de conexão com um possível model de usuário.

 

A classe não está legal, ai vai ficar difícil mesmo vc enxergar alguma vantagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Caro colega, "global" é o prefixo do meu Banco de dados, e "Crud" o pós-fixo da função em si. Não vejo violação das boas práticas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum.. então temos um problema ai. Viola sim algumas boas práticas de programação e de orientação a objetos.

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.