Agora que temos a nossa classe pronta, vamos ver o que ela faz e entender um pouco mais sobre métodos e propriedades e a interação entre eles.
Primeiramente devemos instanciar a classe, ou seja, criar um objeto na memória que irá representar a classe TutoDB.
Isso nós conseguimos da seguinte maneira:
$obj = new TutoDB;
Com isso estamos dizendo ao PHP para armazenar na variável $obj uma nova instância da classe TutoDB.
Depois vamos atribuir valores às nossas propriedades da seguinte forma:
$obj->set('db','information_schema');
$obj->set('host','localhost');
$obj->set('user','root');
$obj->set('pass','');
$obj->set('sql','select * from COLLATIONS');
Com isso dizemos ao PHP para utilizar o método set() do objeto armazenado em $obj (a classe TutoDB) para atribuir à propriedade passada pelo primeiro argumento o valor do segundo argumento.
Argumentos são os valores passados entre os parênteses das funções ou métodos. No caso da primeira linha, estamos dizendo para que seja colocado o valor information_schema na propriedade $db.
Poderíamos fazer isso de outra forma, sem utilizar um método, mas atribuindo diretamente um valor para a propriedade assim:
$obj->db = 'information_schema'
Por que então utilizamos um método para fazer isso?
Vamos supor que quiséssemos que a propriedade $user armazene apenas os valores 'root' ou 'admin'. Se deixássemos para atribuir valores em $user da forma $obj->user, qualquer valor poderia ser atribuído, mas se utilizamos um método para isso (no nosso caso, set()), podemos, dentro do método, colocar um código que verifique se o valor passado para ser armazenado na propriedade $user seja apenas root ou admin.
Vamos aproveitar e ver o método set():
function set($prop,$value){
/*
* Função para atribuir valores às propriedades da classe
* @author Everton da Rosa (Everton3x)
* @param String $prop Nome da propriedade que terá seu valor atribuído
* @param String, Array, Object Valor a ser atribuído
* @return void Não dá nenhum retorno
*/
$this->$prop = $value;
}
Veja que a atribuição de valor à propriedade é feita no seguinte esquema:
$this->$prop = $value;
Onde:
- $this referencia a própria classe.
Precisamos fazer referência à classe pois se colocássemos apenas $prop = $value, estaríamos dizendo ao PHP para atribuir $value a uma variável chamada $prop, que poderia estar até mesmo fora da nossa classe.
Note também que o que o método faz é apenas $this->nomedapropriedade = valor a ser atribuído.
Seguindo...
Vamos conectar com o servidor MySQL com o método conectar() da seguinte forma:
$obj->conectar(); // Realiza a conexão
function conectar(){
/*
* Função para conexão ao banco de dados
* @author Everton da Rosa (Everton3x)
* @return Object Retorna o objeto da conexão
*/
$con = mysql_connect($this->host,$this->user,$this->pass) or die($this->erro(mysql_error()));
return $con;
}
Vejam que o método pega os valores das propriedades $host, $user e $pass para conectar ao servidor MySQL (mysql_connect($this->host,$this->user,$this->pass)), ou se der erro, para o script e chama o método erro() massando-lhe o parâmetro mysql_error() ( or die($this->erro(mysql_error())))
Depois disso selecionamos o banco de dados desejado (que foi informado na propriedade $db):
$obj->selecionarDB(); // Seleciona o banco de dados
Em seguida realizamos a consulta ao banco de dados:
$rs = $obj->query();
Todos os três métodos seguem um mesmo padrão: usam os valores armazenados nas propriedades para realizar alguma coisa.
Ainda falta pegarmos a string SQL com o seguinte código:
$sql = $obj->getSQL(); // Pega o valor da propriedade $sql
Observe que o método getSQL() apenas retorna o valor armazenado na propriedade $sql. Poderíamos fazer isso também da seguinte forma:
$obj->sql;
Por fim, vamos escrever algo para mostrar que nossa classe funciona:
echo 'O número de linhas encontrado para a consulta '.$sql.' é de '.mysql_num_rows($rs); // Exibe o número de linhas do resultado
Se tudo funcionar, no navegador deve aparecer uma mensagem do tipo:
O número de linhas encontrado para a consulta select * from COLLATIONS é de 127
Agora temos o código completo para usarmos nossa classe:
/*
* Testando a classe
*/
$obj = new TutoDB; // Instanciando a classe
// Atribuindo valores às propriedades da classe
$obj->set('db','information_schema');
$obj->set('host','localhost');
$obj->set('user','root');
$obj->set('pass','');
$obj->set('sql','select * from COLLATIONS');
$obj->conectar(); // Realiza a conexão
$obj->selecionarDB(); // Seleciona o banco de dados
$rs = $obj->query();
$sql = $obj->getSQL(); // Pega o valor da propriedade $sql
echo 'O número de linhas encontrado para a consulta '.$sql.' é de '.mysql_num_rows($rs); // Exibe o número de linhas do resultado
Agora que sabemos o básico cobre classes, propriedades e métodos, vamos na conclusão abordar os principais conceitos do artigo.