Jump to content


Photo

Aprendendo Classes...


  • Faça o login para participar
20 replies to this topic

#1 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 08/04/2006, 13:14

Nossa estou tão poético hoje :lol:

Mas assim, estou tentando seguir o cnselho de um amigo (que não vou dizer que é o Paulo Freitas) de tentar pérder o medo e aprender classes. Fazendo o PHP trabalhar para mim (palavras dele).

Daí que eu criei uma classe e, como estou aprendendo gostaria de saber se ela está CORRETA e qual sua forma UTILIZAÇÃO.

É uma classe para automatizar parte de instruções SQL.

Segue abaixo o começo, com uma função para SELECT simples:

<?php

class sql
{
	function simple_select( $get, $table, $where="", $and="" )
	{
		$current = "SELECT '$get' FROM '$table'";
		
		if( $where != "" )
		{
			$current .= " WHERE $where";
			
			if( $and != "" )
			{
				$current .= " AND $and";
			}
		}
		
		return $current;
		
	}
}

?>

Está classe está certa? Como que eu utilizaria ela?
Testei e não deu erro e sintaxe, mas eu não sei usar.

[]'s

Edição feita por: Jackpot, 08/04/2006, 13:21.


#2 redstyle

redstyle

    Expert

  • Usuários
  • 540 posts
  • Sexo:Masculino

Posted 08/04/2006, 14:54

Fala Jackpot,
Bom início de estudos.

Agora algumas dicas para essa sua classe.

Where pode ter muitas comparações, recomendo uma função tipo setWhere($valor). Essa função na verdade é um método da classe e vc jogaria o valor colocado em um array

Depois através do array vc faz um loop pra montar a sql. Isso você também pode fazer com o AND

Falowz e bom estudo.

Conheça meu blog para Aprender Laravel (Framework PHP)


#3 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 08/04/2006, 18:41

Deixa eu ir com calma tio. :lol:
Essa eu criei num caderno velho meu e só queria saber se estaria certa.
E, se estive, como que usaria ela.

[]'s

#4 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 08/04/2006, 20:19

O problema é que uma classe com somente um método e sem propriedades não faz muito sentido. Vou postar um exemplo mais interessante, que usei dia desses numa outra oportunidade para explicar OO:

<?php

class Aluno {
   private $nome;
   private $matricula;

   function __construct($nome, $matricula) {
	  $this->nome = $nome;
	  $this->matricula = $matricula;
   }  

   function setNome($nome) {
	  $this->nome = $nome;
   }

   function setMatricula($matricula) {
	  $this->matricula = $matricula;
   }

   function getNome() {
	  return $this->nome;
   }

   function getMatricula() {
	  return $this->matricula;
   }
}

class Escola {
   private $matriculados;
  
   function matricular(Aluno $aluno) {
	  $this->matriculados[] = $aluno;
   }

   function getAluno($matricula) {
	  if (count($this->matriculados) > 0) {
		 foreach($this->matriculados as $objeto) {
			if ($matricula==$objeto->getMatricula())
			   return $objeto;
		 }
	  } else {
		 return "Nenhum aluno encontrado.";
	  }
   }
}

$minhaEscola = new Escola();
$minhaEscola->matricular(new Aluno('Prog',1));
$minhaEscola->matricular(new Aluno('Jackpot',2));
$minhaEscola->matricular(new Aluno('redstyle',3));
$minhaEscola->matricular(new Aluno('Paulo Freitas',4));
$objAluno = $minhaEscola->getAluno(2);

echo $objAluno->getNome();

?>

------
Mero mortal!

#5 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 08/04/2006, 22:15

Gente, sei que vocês estão com boas intenções de ajudar,mas francamente estão me deixando mais enrolado ainda.

O prog principalmente, citando comando comando como private, __construct, a famosa ->, o comando new.

Eu tô mais perdido que cego em tiroteio.

Não tem um livro ou manual mais abrangente e bem fácil de entender.
O manual eu não entendi muito bem.

[]'s

#6 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 08/04/2006, 22:28

É díficil compreender de imediato, claro.

Mas como você está iniciando os estudos, acompanhe pelo manual mesmo. O que você não entender, vai postando para sanar as dúvidas.
E conforme for aumentando o nível, os links para alguns textos que irão ajudar serão indicados pelos que já possui uma maior experiência.

Mas, enfim, nenhum texto além para indicar no momento.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#7 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 08/04/2006, 22:31

Mas e o que eu perguntei no primeiro post.
Se a classe xinfrim que eu fiz funcionaria e como eu a faria funcionar.

[]'s

#8 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 08/04/2006, 22:44

Funcionará ou não? Diz logo! :P
Não funcionará por usar apóstrofos entre a lista de campos e o nome da tabela.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#9 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 09/04/2006, 09:27

Corrigindo essa classe com ficaria ela e sua forma de utilização?

Eu preciso de uma base mais ou menos pra quando começar os estudos "pra valer" eu não me perder.

[]'s

#10 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 09/04/2006, 09:59

class sql
{
	function simple_select( $get, $table, $where="", $and="" )
	{
		$current = "SELECT $get FROM $table";

		if( $where != "" )
		{
			$current .= " WHERE $where";

			if( $and != "" )
			{
				$current .= " AND $and";
			}
		}

		return $current;
	}
}

Você poderia usar assim:
$sql = new sql;
print $sql->simple_select('id, nome', 'usuarios', 'id = \'1\'', 'nome LIKE \'f%\'');

Ou assim:
print sql::simple_select('id, nome', 'usuarios', 'id = \'1\'', 'nome LIKE \'f%\'');

Saída:

SELECT id, nome FROM usuarios WHERE id = '1' AND nome LIKE 'f%'


http://www.php.net/m...nekudotayim.php
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#11 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 09/04/2006, 12:24

Era isso que eu não sbia, hehe.
QWue tinha de instanciar com o new ( é assim que se fala né) e "usar" com o -> ou os :

Mas me fala uma coisa pra que que serve o $this e como funciona a declaração de variáveis, como var.

[]'s

#12 lugs

lugs

    Normal

  • Usuários
  • 83 posts
  • Sexo:Não informado
  • Localidade:Capinas - SP

Posted 09/04/2006, 13:11

ae, manjo quase nada de OO mas acho q da ajudar nessa:

o $this serve qndo vc quer alterar a própria classe, a q vc tá mexendo

qndo vc tá modelando a classe, vc vai usar isso d+, afinal, vc tá criando ela e seus atributos

Edição feita por: lugs, 09/04/2006, 13:11.

"Qndo eu apontar para a Lua, não olhe para o meu dedo"

#13 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 09/04/2006, 16:57

Alterar classe? Inteira? :blink:
Modelar a classe? Falou grego :lol:

[]'s

#14 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 09/04/2006, 17:26

Na seção de tutoriais você encontra explicações do Balala. ;)
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#15 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 10/04/2006, 12:09

Eu até imprimi esse postão do Bala mas não entendi muito não.
Quero ir aos poucos, pra não me enrolar.

[]'s




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq