From e8589daae49573b26d23d58efa694e5ec2a6ec99 Mon Sep 17 00:00:00 2001 From: Virgilio Pontes Date: Mon, 30 Sep 2019 12:44:39 -0300 Subject: [PATCH] =?UTF-8?q?-=20Ajustes=20=20=20=20-=20PSR-2=20Code=20Style?= =?UTF-8?q?=20=20=20=20-=20Cria=C3=A7=C3=A3o=20do=20m=C3=A9todo=20countRow?= =?UTF-8?q?s()=20como=20alias=20de=20qtdLinhasTabela()=20=20=20=20-=20Come?= =?UTF-8?q?nt=C3=A1rios=20em=20alguns=20m=C3=A9todos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MySQLWizard.php | 467 ++++++++++++++++++++++++++++++-------------- 1 file changed, 321 insertions(+), 146 deletions(-) diff --git a/src/MySQLWizard.php b/src/MySQLWizard.php index a5f0efe..b3aaa07 100644 --- a/src/MySQLWizard.php +++ b/src/MySQLWizard.php @@ -1,11 +1,17 @@ '127.0.0.1', 'port'=>'3306', @@ -17,30 +23,43 @@ function __construct($database_sets=''){ 'echo_msg'=>false ); - if($database_sets!=''){ + if (empty($database_sets)) { $database_sets = (array)$database_sets; - foreach($database_sets_defalt as $key=>$value){ - if(!isset($database_sets[$key])){ + foreach ($database_sets_defalt as $key=>$value) { + if (!isset($database_sets[$key])) { $database_sets[$key] = $database_sets_defalt->{$key}; } } $this->database_sets = (object)$database_sets; - }else{ - $this->database_sets = $database_sets_defalt; + } else { + $this->database_sets = $database_sets_defalt; } - $this->table = ''; - $this->connect(); + $this->table = ''; + $this->_connect(); } - private function connect(){ - $connect = mysqli_connect($this->database_sets->host,$this->database_sets->user,$this->database_sets->password,$this->database_sets->database,$this->database_sets->port); + /** + * Cria a instancia de conexão com o banco de dados + * + * @return object + */ + private function _connect() + { + $connect = mysqli_connect( + $this->database_sets->host, + $this->database_sets->user, + $this->database_sets->password, + $this->database_sets->database, + $this->database_sets->port + ); + $this->connect = $connect; - if(isset($this->database_sets->charset)){ + if (isset($this->database_sets->charset)) { $this->connect->set_charset($this->database_sets->charset); } - - if(isset($this->database_sets->country)&&$this->database_sets->country=='Brazil'){ + + if (isset($this->database_sets->country) && $this->database_sets->country=='Brazil') { //Seta o tipo de Carcateres do Banco de Dados para UTF8 $this->query("SET time_zone = '-3:00'"); $this->query('SET sql_mode = ""'); @@ -50,92 +69,185 @@ private function connect(){ return $connect; } - function statusMsg($status){ + /** + * Retorna o status para a mensagem de execução da transaction + * + * @param bool $status Status da etapa da transaction + * + * @return string + */ + private function _statusMsg($status) + { return $status ? 'OK':'ERRO'; } - function trans_start(){ - $status = mysqli_begin_transaction($this->connect,MYSQLI_TRANS_START_READ_WRITE); - if($this->database_sets->echo_msg){ - echo'Início da transação Status: '.$this->statusMsg($status).'
'; - }else{ + /** + * Inicia uma Transaction + * + * @return void + */ + public function trans_start() + { + $status = mysqli_begin_transaction( + $this->connect, + MYSQLI_TRANS_START_READ_WRITE + ); + + if ($this->database_sets->echo_msg) { + echo'Início da transação Status: '.$this->_statusMsg($status).'
'; + } else { return $status; } } - function trans_commit(){ + /** + * Realiza o Commit de uma transaction + * + * @return void + */ + public function trans_commit() + { $status = mysqli_commit($this->connect); - if($this->database_sets->echo_msg){ - echo'Commit Transação: '.$this->statusMsg($status).'
'; - }else{ + if ($this->database_sets->echo_msg) { + echo'Commit Transação: '.$this->_statusMsg($status).'
'; + } else { return $status; } } - function trans_rollback(){ + /** + * Realiza o Rollback de uma transaction + * + * @return void + */ + public function trans_rollback() + { $status = mysqli_rollback($this->connect); - if($this->database_sets->echo_msg){ - echo'Voltar Transação: '.$this->statusMsg($status).'
'; - }else{ + if ($this->database_sets->echo_msg) { + echo'Voltar Transação: '.$this->_statusMsg($status).'
'; + } else { return $status; } } - function close(){ + /** + * Fecja a conexão com o banco de dados + * + * @return bool + */ + public function close() + { $status = mysqli_close($this->connect); - if($this->database_sets->echo_msg){ - echo'Fechar Conexão: '.$this->statusMsg($status).'
'; - }else{ + if ($this->database_sets->echo_msg) { + echo'Fechar Conexão: '.$this->_statusMsg($status).'
'; + } else { return $status; } } - function affected_rows(){ + /** + * Retorna a quantidade de linhas afetadas + * + * @return int + */ + public function affected_rows() + { return mysqli_affected_rows($this->connect); } - function qtdLinhasTabela($tabela){ + /** + * Retorna a quantidade de resgitros da tabela + * Alias para qtdLinhasTabela() + * + * @param string $table Tabela onde o comando sera executado + * + * @see $this->qtdLinhasTabela() + * + * @return int + */ + public function countRows($table) + { + return $this->qtdLinhasTabela($table); + } + + /** + * Retorna a quantidade de registros na tabela + * + * @param string $tabela Tabela onde o comando sera executado + * + * @return int + */ + public function qtdLinhasTabela($tabela = '') + { + $this->_verificaTabela($tabela); + $result = $this->query('SELECT count(*) as total FROM '.$tabela); + + if (!$result) { + throw new Exception('Erro ao obter o total de registros a tabela'); + } + $qtdlinhas = mysqli_fetch_assoc($result)['total']; + return $qtdlinhas; } - function query($query){ - $result = mysqli_query($this->connect,$query); + /** + * Executa as Querys montadas pela Classe + * + * @param string $query Query que sera executada no Banco de Dados + * + * @return void + */ + public function query(string $query) + { + $result = mysqli_query($this->connect, $query); return $result; - } - - function set_table($tabela){ - $this->table = $tabela; - } - - /** - * Insere uma linha na tabela do banco de dados - * @param array $dados Array com os dados a serem inseridos no banco de dados - * @param string $tabela tabela em que os dados serão inseridos - * @return bool|int - */ - function insert($dados,$tabela=''){ - if($tabela==''){ - $tabela = $this->table; - } - $this->verificaTabela($tabela); - + } + + /** + * Configura tabela onde os comandos serão executados + * + * @param string $tabela Tabela que a classe ira interagir + * + * @return void + */ + public function set_table($tabela) + { + $this->table = $tabela; + } + + /** + * Insere uma linha na tabela do Banco + * + * @param array $dados Array com os dados a serem inseridos no Banco + * @param string $tabela tabela em que os dados serão inseridos + * + * @return bool|int + */ + function insert($dados,$tabela='') + { + + if ($tabela=='') { + $tabela = $this->table; + } + $this->_verificaTabela($tabela); + $query = "INSERT INTO ".$tabela; $campos =' ('; $valores =' ('; - foreach($dados as $key=>$value){ + foreach ($dados as $key=>$value) { $campos.= $key.','; - $valores.= $this->isNumeric($value).','; + $valores.= $this->_isNumeric($value).','; } - $campos = $this->removeVirgula($campos); - $valores = $this->removeVirgula($valores); + $campos = $this->_removeVirgula($campos); + $valores = $this->_removeVirgula($valores); $campos.=') '; $valores.=') '; @@ -146,119 +258,152 @@ function insert($dados,$tabela=''){ } - /** - * Insere diversas linhas na tabela do banco de dados - * @param array $dados Possui os dados das linhas que devem ser inseridas na tabela do banco de dados; - * @param string $tabela tabela em que os dados serão inseridos - * @return bool|array - */ - function insert_batch($dados,$tabela=''){ - if($tabela==''){ - $tabela = $this->table; - } - $this->verificaTabela($tabela); + /** + * Insere diversas linhas na tabela do banco de dados + * + * @param array $dados Possui os dados das linhas que devem ser + * inseridas na tabela do banco de dados; + * @param string $tabela Tabela em que os dados serão inseridos + * + * @return bool|int + */ + public function insert_batch($dados,$tabela='') + { + + if ($tabela=='') { + $tabela = $this->table; + } + $this->_verificaTabela($tabela); $query = "INSERT INTO ".$tabela; $campos =' ('; - foreach ($dados[0] as $key=>$value){ + foreach ($dados[0] as $key=>$value) { $campos.= $key.','; } - $campos = $this->removeVirgula($campos); + $campos = $this->_removeVirgula($campos); $campos.=') '; $valores = ''; - foreach($dados as $key=>$value){ + foreach ($dados as $key=>$value) { $valores .=' ('; - foreach ($value as $key=>$value){ - $valores.= $this->isNumeric($value).','; + foreach ($value as $key=>$value) { + $valores.= $this->_isNumeric($value).','; } - $valores = $this->removeVirgula($valores); + $valores = $this->_removeVirgula($valores); $valores.='),'; } - $valores = $this->removeVirgula($valores); + $valores = $this->_removeVirgula($valores); $query.= $campos.'VALUES'.$valores; $result = $this->query($query); return $result==false ? $result : mysqli_insert_id($this->connect); - } - - /** - * @param array $campoWhere Array com o campo e valor que deve ser usado para buscar os dados no banco, se vazio retorna toda a tabela - * @param string $tabela tabela que comtem os dados que devem ser selecionados - * @return array Retorna um Array de objetos - */ - function select($campoWhere='',$tabela=''){ - if($tabela==''){ - $tabela = $this->table; - } - $this->verificaTabela($tabela); + } + + /** + * Realiza o select no banco de dados e retorna uma lista com os registros + * + * @param array $campoWhere Array com o campo e valor que deve ser usado para + * buscar os dados no banco, se vazio retorna + * todos os registros da tabela + * @param string $tabela Tabela que sera realizado o SELECT + * + * @return array Retorna um Array de objetos + */ + function select($campoWhere='',$tabela='') + { + if ($tabela=='') { + $tabela = $this->table; + } + $this->_verificaTabela($tabela); $query = "SELECT * FROM ".$tabela; - if(is_array($campoWhere)){ - $query.=" WHERE ".$this->make_where($campoWhere); - }elseif(is_string($campoWhere)&&$campoWhere!=''){ + if (is_array($campoWhere)) { + $query.=" WHERE ".$this->_makeWhere($campoWhere); + } elseif (is_string($campoWhere)&&$campoWhere!='') { $query.=" WHERE ".$campoWhere; } $result = $this->query($query); - if(!$result){ + if (!$result) { return $result; - } - - while($dados = mysqli_fetch_assoc($result)){ - $array[] = (object)$dados; - } + } + + while ($dados = mysqli_fetch_assoc($result)) { + $array[] = (object)$dados; + } return isset($array) ? $array : array(); - } - - /** - * Atualiza atravez do $campoWhere os dados de uma determianda linha no banco de dados - * @param array $dados Colunas e valores que devem ser atualizados - * @param array $campoWhere Coluna e valor que deve ser utilizado no WHERE - * @param string $tabela tabela que comtem os dados que devem ser atualizados - * @return bool - */ - function update($dados,$campoWhere,$tabela=''){ - if($tabela==''){ - $tabela = $this->table; - } - $this->verificaTabela($tabela); + } + + /** + * Atualiza atravez do $campoWhere os dados de uma determianda linha no banco + * + * @param array $dados Colunas e valores que devem ser atualizados + * @param array $where Coluna e valor que deve ser utilizado no WHERE + * @param string $tabela Tabela que comtem os dados que devem ser atualizados + * + * @return bool + */ + function update($dados,$where,$tabela='') + { + if ($tabela=='') { + $tabela = $this->table; + } + $this->_verificaTabela($tabela); $query = "UPDATE ".$tabela." SET "; + /** + * Armazena a String do SET + * + * @var string + */ $valores =''; - $campoWhereS = array_keys($campoWhere)[0]; + $fristKey = array_keys($where)[0]; - foreach ($dados as $key=>$value){ - if($key!=$campoWhereS){ - $valores.= $key.'='.$this->isNumeric($value).','; + foreach ($dados as $key=>$value) { + if ($key!=$fristKey) { + $valores.= $key.'='.$this->_isNumeric($value).','; } } - $valores = $this->removeVirgula($valores); - $query.= $valores." WHERE ".$campoWhereS." = ".$this->isNumeric($campoWhere[$campoWhereS]); + $valores = $this->_removeVirgula($valores); + $query.= $valores; + + $query.= " WHERE ".$fristKey." = ".$this->_isNumeric($where[$fristKey]); $result = $this->query($query); return $result; } - function delete($campoWhere,$soft='',$tabela=''){ - if($tabela==''){ - $tabela = $this->table; - } - $this->verificaTabela($tabela); + /** + * Desabilita ou exclui um registro da tabela + * + * @param array $campoWhere Array com os campos para a decisão da exclusão + * @param string $soft Configura se é um Soft Delete + * @param string $tabela Tabela onde esta o registro + * + * @return bool + */ + public function delete($campoWhere,$soft='',$tabela='') + { + if ($tabela=='') { + $tabela = $this->table; + } + $this->_verificaTabela($tabela); - if($soft!=''){ + if ($soft!='') { $query = "UPDATE ".$tabela." SET ".$soft."=0 "; - }else{ + } else { $query = "DELETE FROM ".$tabela; } - $query.= " WHERE ".array_keys($campoWhere)[0]." = ".$this->isNumeric($campoWhere[array_keys($campoWhere)[0]]); + + $keys = array_keys($campoWhere); + $query.= " WHERE ".$keys[0]." = ".$this->_isNumeric($campoWhere[$keys[0]]); $result = $this->query($query); return $result; @@ -266,53 +411,83 @@ function delete($campoWhere,$soft='',$tabela=''){ /** * Verifica se a String é numeral, se não for adiciona "" para INSERT e SELECT + * * @param string $value = 'Maria' || '1' || 'NOW()' + * * @return string '"Maria"' || '1' || 'NOW()' */ - private function isNumeric($value){ - if(!is_numeric($value)&&!is_null($value)&&$value!='NOW()'){ + private function _isNumeric($value) + { + if (!is_numeric($value) && !is_null($value) && $value!='NOW()') { $value = "'".$value."'"; } return $value; } /** - * Remove o ultimo caracter de uma string, utilizado para remover a virgula dos INSERT + * Remove o ultimo caracter de uma string, + * utilizado para remover a virgula dos INSERT + * * @param string $string = 'Virgilio,' + * * @return string 'Virgilio' */ - private function removeVirgula($string){ - return substr($string,0, strlen($string)-1); + private function _removeVirgula($string) + { + return substr($string, 0, strlen($string)-1); } - private function make_where($array){ - if(!is_array($array)){ + /** + * Cria e retorna a parte do WHERE de um SELECT + * + * @param array $array Array com os campos e regras do SELECT + * + * @return string + */ + private function _makeWhere($array) + { + if (!is_array($array)) { return false; } + + /** + * Armazrna a string que sera retornada + * + * @var string + */ $where = ''; - foreach($array as $key=>$value){ - $keys = explode(' ',$key); + + foreach ($array as $key=>$value) { + $keys = explode(' ', $key); $campo = $keys[0]; - $operador = isset($keys[1])&&is_array($keys) ? ' '.$keys[1].' ' : ' = ' ; + $operador = (isset($keys[1]) && is_array($keys)) ? ' '.$keys[1].' ' : ' = ' ; - if($where!=''){ + if ($where!='') { $where.= ' AND '; } - if($value!='NULL'){ - $where .= $campo.$operador.$this->isNumeric($value); - }else{ + if ($value!='NULL') { + $where .= $campo.$operador.$this->_isNumeric($value); + } else { $where .= '( '.$campo.($operador==' = ' ? ' IS ' : ' IS NOT ').$value.' )'; } } return $where; - } - - function verificaTabela($tabela){ - if($this->table==''&&$tabela==''){ - throw new Exception('A tabela para executar a operação não está setada, utilize set_table("usuarios").'); - } - } + } + + /** + * Verifica se a Tabela esta configurada + * + * @param string $tabela Tabela + * + * @return void + */ + private function _verificaTabela($tabela) + { + if ($this->table=='' && $tabela=='') { + throw new Exception('A tabela para executar a operação não está setada, utilize set_table("usuarios").'); + } + } } \ No newline at end of file