Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera aqui vai mais um cursinho depois do tópico Introdução a Classes.
Nessa segundo parte vamos aprender a como manusear e trabalhar com classes, antes de mais nada é recomendado que você de uma lida no primeiro tópico que eu criei. http://forum.imasters.com.br/index.php?showtopic=167562
Bem vamos lá.
Curso: Trabalhando com Classes parte 2Professor: Erick Viana Leão (Perfect Lion)msn: erick_leao@hotmail.com <- adicionar com moderaçãosite: http://www.paodemugen.com.br
Já vimos como funciona classe e o que compõem uma classe correto? Agora você deve está pensando pó (Já sei como é uma classe e o que ela tem mais como eu uso essa “jabirosca”?)
É simples. Vou explicar uma classe de login e senha vamos criar ela do principio.
Atendes de mais nada precisamos cria uma tabela com os seguintes dados
Tbuser
Id (int:auto-numeric) || usuário (varchar(8)) || senha (varchar(32))
CREATE TABLE tbuser (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,usuario VARCHAR( 8 ) NOT NULL ,senha VARCHAR( 32 ) NOT NULL ) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_swedish_ci
Depois de termos criado nossa tabela agora vamos criar nossa classe login. Antes de mais nada vamos criar um arquivo chamado ‘config.php’ que será onde vai está configurado o as info de nosso banco de dados. Perseba que nela temos 1 classe chamada DB. So não criei um arquivo separado para ele para num complicar mais aqui ok. Vcs verão mais para frente como eu vou usar essa classe aqui.
Config.php
<?#:::::::::::::::::::::::::::::::::#:: Info Conexão BDdefine("DB_HOST","localhost");define("DB_USUARIO","root");define("DB_SENHA","");#::::::::::::::::::::::::::::::::::#:: Conectando com o DB$db_conect = mysql_connect(DB_HOST,DB_USUARIO,DB_SENHA);define("DB_CONNECT", $db_conect);#::::::::::::::::::::::::::::::::::#:: criação da classe DBclass DB{#:::::::::::::::::#:: função para fecha o banco de dados# protected function DBfecha(){ # para php5function DBfecha(){# para php4 mysql_close(DB_CONNECT);}#:::::::::::::::::#:: seleciona DBfunction DBseleciona($db){return mysql_select_db($db,DB_CONNECT); }}?>
temos que pensar o nome para essa classe sabemos que essa classe ele serve para autenticar uma conta de um usuário correto? Então podemos dar o nome de “login” e chamamos o arquivo de consiguração antes.
class_login.php
require ("config.php");class login{ }
Depois de termos já definido um nome para a classe agora vamos ver o que ela precisa como propriedade.
Sabemos que vamos está usando sempre o query de nossa consulta para poder usar ela depois certo? Então poque não criarmos uma propriedade chamada $return_query que vai sempre está armazenar o retorno da consulta correto? Depois disso vamos pensar e outra variável chama “total_query” porque total_query? Porque ela que ficara responsável por obter o total de resultado encontrado de nossas consultas.
class_login.php
require ("config.php");#::::::::::::::::::::::::::::::::::::#:: classe loginclass login{ # private $return_query; # para php5var $return_query; # para php4#protected $total_query; # para php5var $total_query; # para php4}
Pronto já temos a classe com suas propriedades... agora vamos ao seus métodos. Vamos criar um método logar() que é para o kra digitar o usuário e senha e fazer a consulta ok.. bora fazer.
O que vamos ter dentro desse método?
R: Vamos ter uma consulta que verifica o usuário e senha;
E ira retorna true ou false se a consulta foi feita com sucesso.
Então bora colocar em pratica.
class_login.php
require ("config.php")#::::::::::::::::::::::::::::::::::::#:: classe loginclass login{ # private $return_query; # para php5var $return_query; # para php4#protected $total_query; # para php5var $total_query; # para php4#:: criação da função logar();# public function logar($nome,$senha){ # para php5function logar($nome,$senha){ DBseleciona("dados"); $this->return_query = mysql_query("select * from tbuser where upper(nome) = '".strtoupper($nome)."' and senha = '$senha'"); return ($this->return_query)? true:false;}}
Pronto agora como iniciar isso? Lembra lá no primeiro curso? Certo então vamos fazer
class_login.php
require ("config.php")#::::::::::::::::::::::::::::::::::::#:: classe loginclass login{ # private $return_query; # para php5 var $return_query; # para php4 #protected $total_query; # para php5 var $total_query; # para php4 #:: criação da função logar(); # public function logar($nome,$senha){ # para php5 function logar($nome,$senha){ DBseleciona("test"); # chama a função que seleciona o DB $this->return_query = mysql_query("select * from tbuser where upper(usuario) = '".strtoupper($nome)."' and senha = '$senha'"); return ($this->return_query)? true:false; }}$logar = new login();echo $logar->logar("erick","12356");
Bem agora execute o arquivo class_login.php e veja o resultado.
“Pó erick que palhaçada é essa? Deu erro aqui de SQL o que ta acontecendo?
Olha ai o erro que ta aparecendo
Fatal error: Call to undefined function DBseleciona() in C:\root\test\conectdb\teste1.php on line X”
Calma isso é porque a função (método) DBseleciona() não existe dentro da classe login e nós criamos ela na classe DB que está dentro de nossa config.php lembra?
“Sim lembro mais como eu vou fazer para chamar ela então? Cria ela d novo?”
Não agora você faz o seguinte.. existe um comando em php na parte de classe que você faz com que suas classes elas se unem o chama Pai e Filho no nosso caso aqui o Pai será o “DB”então o nosso filho o “login”. Na vida real quando a pessoa quando nasce ela sempre herda características de seu pai ou mãe certo na classe funciona da mesma maneira... Então com o PHP5 existe visibilidades que nada mais é para proteger melhor a classe fazendo assim uma melhor organização entre ela. Então explicando a parte do PHP5 que estão comentados... onde é Privado quer dizer que aquele conteúdo pertence somente ao pai então o filho não herda essa característica aqui sendo representado como propriedade da classe.
Bem temo tbm a visibilidade Protected isso quer dizer que o conteúdo é protegido então ele não pode ser chamado fora de uma classe.. então o pai e o filho podem chamar ela atravez do comando “$this->” na frente.
E chegamos ao Public que é algo que todos tem.. imagina o mundo todo todos temos olhos, nariz essas coisa.. então é algo publico todos podemos ter então pode-se chamar os comando até fora da classe.. ^^
Aqui vai um exemplo de visibilidade
Tirado do PHP.net
<?php/** * Define MinhaClasse */class MinhaClasse{ public $publica = 'Public'; // aqui essa variável é publica protected $protegida = 'Protected'; // aqui essa variável é protegida private $privada = 'Private'; // aqui essa variável é privada function imprimeAlo() { echo $this->publica; // aqui ele imprime na tela o conteúdo da varivavel echo $this->protegida; // aqui ele imprime na tela o conteúdo da varivavel echo $this->privada; // aqui ele imprime na tela o conteúdo da varivavel }}$obj = new MinhaClasse();echo $obj->publica; // Aqui ele chama a variável publica fora da classe lembram que eu disse? Que ela podia ser chamado fora da classe? Ta ai aqui ele mostra o conteúdo da variavelecho $obj->protegida; // Aqui da erro porque como eu disse ela não pode ser chamada fora de sua classe lembra disso?echo $obj->privada; // Aqui tbm dá erro porque dá erro? Porque ela tbm não pode ser chamada a não ser dentro de sua classe$obj->imprimeAlo(); // Mostra Public, Protected e Private porque todas essas variáveis que constavam dentro de sua própria classe ela pode chamar.. então dentro dessa função eu chamei elas todas/** * Define MinhaClasse2 */class MinhaClasse2 extends MinhaClasse // aqui a classe2 ela estende de classe{ // Nós podemos redeclarar as propriedades públicas e protegidas mas não as privadas protected $protegida = 'Protected2'; // aqui como disse a frase logo acima ele pode redeclarar as propriedas ou funções que não são privadas caso você tente redeclarar uma private vai dar erro function imprimeAlo() { echo $this->publica; // aqui ele está imrpimindo o conteúdo da variável publica herdada de MinhaClasse aqui ele consegue resultado pois lembrando que public ele é livre.. fica mais fácil de entender. echo $this->protegida; // aqui ele imprime o valor que você definiu novamente que foi protected2 echo $this->privada; // aqui ele não tem como imprimir porque dá erro lembra que as únicas que o filho herda do pai são o public e o protected já o private somente é do pai. }}$obj2 = new MinhaClasse2();echo $obj2->publica; // aqui ele mostra o conteúdo pois como eu disse é public :Pecho $obj2->privada; // aqui não mostra porque o pai não deixa.. e a criança não herdo essa característica do pai.echo $obj2->protegida; // mesma coisa ele é protegido só pode ser manipulado dentro das classes ^^$obj2->imprimeAlo(); // Mostra Public, Protected2 e não Private como eu disse logo lá acima exmplicadno dentro dessa função o porque.?>
Bem fico claro essa parte de visibilidade?
“sim”
Legal bora continuar.
Bem então o que temos que fazer em nossa classe login?
“temos que fazer ela extender de DB para ela herda o método de seu pai?”
Isso mesmo boa garoto.. ta aprendendo em.. e depois?
“depois colocamos o $this-> na frente dessa função pois para informa que estamos chamando ela de dentro da classe ^^”
É isso ai garoto então mostra ai pro tio como que fica a classe login então.
“Ok”
require ("config.php")#::::::::::::::::::::::::::::::::::::#:: classe loginclass login extends DB{ # private $return_query; # para php5 var $return_query; # para php4 #protected $total_query; # para php5 var $total_query; # para php4 #:: criação da função logar(); # public function logar($nome,$senha){ # para php5 function logar($nome,$senha){ $this->DBseleciona("test"); # chama a função que seleciona o DB $this->return_query = mysql_query("select * from tbuser where upper(usuario) = '".strtoupper($nome)."' and senha = md5('123456')")or die(mysql_error()); $this->total_query = mysql_num_rows($this->return_query); return ($this->total_query > 0)? true:false; }}$logar = new login();echo $logar->logar("erick","12356");
Boa garoto...você executo o script agora? Rodo para ver o que ele mostra?
“sim”
É o que ele mostra na tela?
“0, porque?”
Bem Porque provavelmente você num tem nenhum cadastro em seu banco de dados com o usuario e a senha codificada em md5()
“ata, pronto adicionei .... agora sim ta aparecendo um numero 1”
Isso mesmo.. ele está informando que há um registro encontrado.. e retorno True.
Bem é isso ai galera o login feito.. e ao mesmo tempo aprendeu como trabalhar com classes.. bem nessa 2° aula é só isso até a próxima..
Duvidas postem logo abaixo ^^
Carregando comentários...