Publicidade (Anuncie Aqui)

Orientação a Objetos – Material Básico

Orientação a Objetos – Material Básico

Não vou entrar em detalhes sobre Orientação a Objetos pois a definição não muda muita coisa… Vou resumir: Programação orientada a objetos (ou, mais conhecida como POO) se resume ao uso de classes, um recurso um tanto quanto interessante do PHP.

Classes são como funções, só que com variáveis e funções próprias.. Geralmente usadas para agrupar um numero X de funcionalidades/métodos… Vamos criar, passo-a-passo, uma classe para as funções básicas do MySQL.

Primeiro, definimos a classe com nome MeuSQL:

< ?php

class MeuSQL {

}

?>

Agora vamos definir algumas variáveis com valores padrões:

< ?php

class MeuSQL {
	// Propriedades padrões
	var $servidor = '127.0.0.1';
	var $usuario = 'root';
	var $senha = '';
	var $banco = 'meusite';
	var $conexao = null;

}

?>

Na verdade, devemos chamar estas variáveis como “propriedades” (nome que se dá para as variáveis da classe). Toda propriedade de classe, para manter a compatibilidade com o PHP 4, precisa ter a palavra “var” antes.

Vale lembrar que, fora da classe, essas propriedades não vão existir.. Nem após você chamar a classe. Isso deixa as coisas mais seguras. :)

Agora vamos definir o primeiro método. “Método” é nome que se dá para uma função dentro de uma classe.

< ?php

class MeuSQL {
	// Propriedades padrões
	var $servidor = '127.0.0.1'; // Endereço
	var $usuario = 'root'; // Usuário
	var $senha = ''; // Senha
	var $banco = 'meusite'; // Banco de dados
	// Outras variáveis para uso interno:
	var $conexao = null;
	var $query = null;

	function conecta() {
		$this->conexao = mysql_connect($this->servidor, $this->usuario, $this->senha);
		$status = mysql_select_db($this->banco, $this->conexao);
		return $status;
	}

}

?>

Criamos um método que fará a conexão com o MySQL… Quem já estudou um pouco sobre MySQL sabe que a função mysql_connect() precisa de três parâmetros, nessa ordem: o servidor (endereço), o usuário e a senha… Repare que usamos $this->servidor e não $servidor, vou explicar por que:

Quando queremos pegar o valor de uma propriedade de uma classe, fazemos referência a própria classe, por isso o $this. Sem isso não é possível pegar o valor da propriedade.

Preste atenção: quando definimos variáveis dentro das funções (métodos) não é necessário usar o $this, pois, nesse caso, estamos falando de variáveis e não de propriedades. Sei que é um pouco complicado… Mas ninguém disse que POO é pra qulquer um 8-).

Agora vamos definir mais três métodos para as outras funções básicas do MySQL:

< ?php

class MeuSQL {
	// Propriedades padrões
	var $servidor = '127.0.0.1'; // Endereço
	var $usuario = 'root'; // Usuário
	var $senha = ''; // Senha
	var $banco = 'meusite'; // Banco de dados
	// Outras variáveis para uso interno:
	var $conexao = null;
	var $query = null;

	function conecta() {
		$this->conexao = mysql_connect($this->servidor, $this->usuario, $this->senha);
		$status = mysql_select_db($this->banco, $this->conexao);
		return $status;
	}

	function consulta($query) {
		$this->query = mysql_query($query);
		return $this->query;
	}

	function resultado() {
		return mysql_fetch_assoc($this->query);
	}

	function registros() {
		return mysql_num_rows($this->query);
	}

}

?>

Podemos dizer que a nossa classe está pronta… Salve este arquivo como MeuSQL.php. Agora vamos ver um exemplo de uso e depois, comentá-la toda:

< ?php
// Inclui o arquivo com a classe
include("MeuSQL.php");

// Instancia/chama a classe MeuMySQL
$sql = new MeuSQL();

// Conecta-se ao banco de dados usando os valores padrões
$sql->conecta();

// Define e executa uma query SQL
$busca = "SELECT * FROM `noticias` WHERE `id` > 0 LIMIT 10";
$sql->consulta($busca);

// Descobe e exibe o total de registros encontrados
$total = $sql->registros();
echo "Total de registros: " . $total;
echo "<hr />";

// Exibe dados de cada registro
while ($dados = $sql->resultado()) {
	// Aqui o array $dados terá o valor de cada coluna do registro
	echo "- Titulo da notícia: " . $dados['titulo'];
	echo "<br />";
}
?>

Viu como as classes podem simplificar tudo na sua vida?

Agora, por fim, fiz alguns ajustes e comentei cada método da classe para ficar mais fácil de entender:

< ?php

/**
* MeuSQL
* Classe personalizada de uso do MySQL
*/
class MeuSQL {
	// Propriedades padrões
	var $servidor = '127.0.0.1'; // Endereço
	var $usuario = 'root'; // Usuário
	var $senha = ''; // Senha
	var $banco = 'meusite'; // Banco de dados
	// Outras variáveis para uso interno
	var $conexao = null;
	var $query = null;

	/**
	* Função para fazer a conexão com o MySQL
	*/
	function conecta() {
		$this->conexao = mysql_connect($this->servidor, $this->usuario, $this->senha);
		$status = mysql_select_db($this->banco, $this->conexao);
		return $status;
	}

	/**
	* Função para fazer uma consulta no MySQL
	*/
	function consulta($query) {
		$this->query = mysql_query($query);
		return $this->query;
	}

	/**
	* Função para retornar cada resultado da consulta
	*/
	function resultado() {
		return mysql_fetch_assoc($this->query);
	}

	/**
	* Função que retorna o total de resultados encontrados
	*/
	function registros() {
		return mysql_num_rows($this->query);
	}

}

?>

Se quiser, pode fazer o download do arquivo com a classe e o exemplo de uso.

Não falei nem 1/10 do poder da orientação a objetos, mas fique certo de que o seu uso é recomendado, e deixa o código mais seguro além de mais rápido e (pra alguns) mais bonito.

Espero que tenham gostado… Qualquer dúvida (e eu sei que serão muitas) podem deixar seu comentário.

Abraços e até a próxima! :D

Você também vai gostar de ler:

Postado em MySQL, PHP, Tutoriais

Com as tags , , , , , , , , , , , , , , , , , , , , ,

Escrito por Thiago Belem

Gostou desse artigo?

Não se esqueça de assinar o RSS e divulgue-o para o mundo:

  • Muito bom o artigo! Gostei bastante, achei bem simples e claro. Vou tentar fazer minhas classes. :)
  • Gostei muito! Primeiro exemplo de classe simples e útil. Sempre tive dificuldade de entender o conceito de classes e nunca consegui criar uma de modo eficiente. Com esse tutorial entendi melhor, e já estou tentando criar algumas, hehe.

    Cara, seu site está de parabéns. Os exemplos que colocam são ótimos porque batem com situações reais, mesmo no php.net a maioria são exemplos muito teóricos. Os seus exemplos batem qualquer site :D

    Aguardando os próximos capítulos! [2]
  • Guilherme Augusto
    Estava mesmo procurando um artigo sobre isto e como acesso seu blog todos os dias, encontrei facilmente.

    :D

    abraço.
    vou aguardar os próximos "capítulos"...
blog comments powered by Disqus