Banco de dados com PDO – parte 1 - Entendendo o padrão MVC na prática – Parte 08 Artigo

Conheça os cursos gratuitos do WebDevBr! - Inscreva-se!


Este artigo foi publicado a 2 anos, 9 meses, 1 semana, 6 dias atrás.

Parece que não, mas estamos na reta final. Agora que já temos quase tudo pronto vamos ver a "parte mais legal da bagaça", o banco de dados.

Os outros artigos desta série.

Vou tentar manter o mais simples possível, então pra facilitar a vida vou criar uma classe que vai automatizar alguns processos, como o prepare(), bindValues() e o execute() do PDO.

Gostou deste artigo?

Receba atualizações semanais com novos artigos do WebDevBr e outras dicas!

Pra quem não conhece o PDO tenho um artigo aqui no blog, ia falar um pouco sobre ele agora, mas como já escrevi.

Pra começar vamos usar um array com dois nós que irão organizar nossos dados:

  • O $save['sql'] vai trazer o nome dos campos do banco, mas só os campos(`campo`, `campo2`, ...)
  • O $save['save'] vai armazenar os valores a serem informados nos campos

Eu sei que podia armazenar em 1 só e usar arraykeys(), mas como disse, vou deixar as coisas bem simples e com comandos básico. Pra isso eu vou criar um método getCampos() dentro de uma classe chamada SuportePdo, pelo nome e namespace já podemos entender que ela ficará dentro de Caminho-ate-o-projeto/Library/Erik/Core/Master/Db/Suporte/Pdo.php.

namespace Erik\Core\Master\Db;

class Suporte_Pdo
{
    protected function getCampos(Array $campos)
    {
        $save['sql']='';
        foreach ($campos as $key => $value) {
            $save['sql'].='`'.$key.'` = :'.$key.' ';
            $save['save'][':'.$key]=$value;            
        }
        return $save;
    }
    /*...*/
}

Agora vou aproveitar pra agilizar algumas coisas pra mim no que se diz respeito aos comandos do PDO e assim facilitar as coisas quando for criar o CRUD de verdade.

namespace Erik\Core\Master\Db;

class Suporte_Pdo
{
    protected function getCampos(Array $campos)
    {
        /*...*/
    }
    protected function pdo($sql, $values)
    {
        $this->pdoPrepare($sql);
        $this->pdoBindValue($values);
        $this->pdoExecute($values);
    }

    protected function pdoPrepare($sql)
    {
        $this->mysql_exec=$this->mysql->prepare($sql);
    }

    protected function pdoBindValue($values)
    {
        foreach ($values as $k=>$v) {
            $this->mysql_exec->bindValue(':'.$k, $v);
        }
    }

    protected function pdoExecute(Array $values=array())
    {
        $this->mysql_exec->execute($values);
    }
}

Assim eu posso simplesmente passar o pdo($sql, $values) e pronto, ele faz o resto pra mim, muito prático né.

Note que estou escrevendo o código com base na simplicidade da coisa, o mais iniciante possível. Eu poderia setar esta classe como abstract, poderia usar implode no getCampos() ao invés de loop, enfim... não estou levando orientação a objetos tão a sério assim, a ideia aqui é realmente transmitir os passos iniciais, na última aula você vai entender.

Na próxima aula vamos usar esta classe pra fazer um CRUD bem simples.

É isso ai, até a próxima aula :)

Aqui os arquivos desta aula e o estudo completo.


Cursos relacionados


* Parcelamento apenas cartão de crédito! Pode haver uma pequena variação no parcelamento em relação a simulações apresentadas!