Jump to content


Photo

Tutorial Oop


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

#1 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 22/07/2004, 14:59

Antes de começar, só queria falar q VOLTEI

Grande coisa <_<

Deixando disso, vamo pro tutorial (ta ai thiagomalarsl, kero ve le agora :P)

Antes disso, há uma apostila enviada por: H²O.
Caso desejem fazer o download dela, DOWNLOAD



Tutorial PHP - Programação Orientada à Objeto (OOP)

Porque um tutorial de OOP?
É uma forma de programação pouco vista no PHP, mas com o lançamento da versão final do PHP 5.0 tudo indica que ele passará a ser mais Orientado à Objeto. Tanto como já é na versão 5.0 como será nas próximas.

O futuro ninguém conhece, então não posso falar, PHP depois da versão 7.0 será somente OOP, como talvez ele pode não fazer tanto sucesso entre os programadores e nem existir mais na versão 5.1.

Um tutorial destinado aos Programadores PHP em geral, aos usuários do Fórum WM Online, e para o cara que não me deixou em paz até isso ficar pronto, thiagorls. Até quando estive me ausentando do Fórum, veio me cobrar isso, cara de pau, não?

Chega de babozeira e vamos ao que interessa, PHP!

================================================================================

Porque programar OO (Orientado à Objeto)?
Nem eu, nem qualquer outra pessoa no mundo pode chegar pra você e falar:
- Programe OO que é muito melhor.
Ou vice-versa. Não teve, não tem e provavelmente não terá nenhuma vantagem em relação a outra forma de programação. Tudo é uma questão de gosto e prática. Claro que, algumas vantagens uma tem em relação a outra, muitas pessoas comentam que programando OO você poderá publicar e buscar classes já prontas para fazer alguma função. Mas o mesmo aconteceria com a Programação "Normal". Comparar OO ao Método normal, é semelhante a comparar as funções echo ou print.

Portanto, não vou estar aconselhando a usar ou não usar OO, é simplesmente o seu gosto. Mas, como li em uma frase no livro PHP 4 - A bíblia.

"Não fique constrangido, caso um Programador OO diga que o script dele de 10 linhas é melhor que o seu de 5 linhas"

Realmente, programando em OO você terá um código fonte maior. Mas por outro lado, melhor compreendido (para outros programadores de OO) do que um código ao modo "normal".

O suporte a OO no PHP, como está no site oficial (php.net) é para usuários com experiências em outras linguaguens que são OO, como C#, e estão acostumados com ela. Por isso da introdução OO no PHP.

Vamos dar os parabéns para quem continuar, pois, está ciente que é uma maneira um pouco mais demorada, mas talvez possa ser mais organizada de programar. Não dúvido que muitos programadores ao lerem o texto acima, tenham para por ai. Nada de incomum, muitos irão ver OO e começar a programar nela, os demais, não veram vantagem nenhuma e deixarão de lado.

================================================================================

Introdução
Enfim, começaremos. Para qualquer programação OO, você criará tudo baseado em Classes, e as variáveis que você costumava usar, passarão a ser Objetos. Vamos à um exemplo:

<?php
class MinhaClasse { // Declaração da Classe
	var $txt1; // Declaração das Variáveis
	var $txt2;
}

$MeuObjeto = new MinhaClasse();
?>

Um exemplo sem utilização, mas que poderá nos ajudar a entender como criar uma classe. Na linha 2 (class MinhaClasse {) é onde declaramos nossa Classe, cada vez que quiser criar um objeto a partir dela, criaremos chamando pelo nome definido "MinhaClasse". Podemos criar quantas classes diferentes quiser, mas não pode ser em bloco:

<?php
class MinhaClasse {
?>
<?php
    var $txt1;
    var $txt2;
}
?>

O exemplo acima não irá funcionar. Voltando ao exemplo correto, as linhas 3 e 4 é onde declaramos nossas variáveis. Exato, para se trabalhar com classes, precisamos declarar as variáveis antes de usá-las. Mas não precisamos definir seu tipo, a não ser que queiramos uma Matriz:

<?php
class MinhaClasse {
    var $txt1 = array();
    var $txt2;
}

$MeuObjeto = new MinhaClasse();
?>

Acho que até aqui não teremos maiores problemas, vamos prosseguir.

Retornando Valores das Classes
Sei que a minha classe tem as váriaveis $txt1 e $txt2, mas como gravo e imprimo o que tem nelas? De uma maneira simples, mas não aconselhada, seria utilizar o operador "->". Vamos supor que o script acima faça parte do nosso código:

echo $MeuObjeto -> txt1;

Não, não esqueci do sinal $ antes de váriavel $txt1. Ao utilizar um objeto referenciamos as váriaveis dele somente com 1 sinal de $. Essa mesma forma poderia ser utilizada para definir valores à variavel:

$MeuObjeto -> txt1 = "Olá Brasil!";

Mas então, porque comentei antes que não era aconselhado utilizar dessa forma? Pelo simples fato de estarmos trabalhando com classes não somente para ter uma espécie de Matriz Multidimensional, mas sim para organizar nosso código. E uma maneira organizada de se fazer isso seria trabalhar com funções dentro das classes:

<?php
class MinhaClasse {
    var $txt1;
    var $txt2;

    function Retornar1() {
   	 echo $this -> txt1;
    }
}

$MeuObjeto = new MinhaClasse();
?>

Agora você se pergunta "O que diabos faz aquele $this ali?". $this é somente uma referência à classe em que se encontra a função. Poderiamos sem problemas colocar no nome da classe para retornar o valor da váriavel, mas iria atrapalhar caso estivessemos trabalhando com classes hierarquicas, ter uma classe pai e filho. Mas isso não é hora de comentar ainda, mais pra frente veremos ;)

Voltando ao nosso código, veja que, a função está dentro de nossa classe, então para executar ela seria dessa forma:

$MeuObjeto -> Retornar1();

Certo, mas já que não utilizo a forma "antiga" para ler a váriavel, como faço para armazenar um valor à ela?
O segredo está nas funções :)

<?php
class MinhaClasse {
    var $txt1;
    var $txt2;

    function Retornar1() {
   	 echo $this -> txt1;
    }

    function Gravar1($valor) {
   	 $this -> txt1 = $valor;
    }
}

$MeuObjeto = new MinhaClasse();
?>

Então ao executar a função $MeuObjeto -> Gravar1(), temos que passar um valor que será o novo valor da váriavel $txt1. Quaisquer outros tipos de funções podem ser declaradas dentro da classe, mas tenha idéia que trabalhar com OO é justamente para ter no final, um código limpo e de fácil entendimento. Talvez alguém está se perguntando, porque venho colocando váriaveis com letras maiusculas. Isso é somente seu estilo de programação, vinha fazendo com _ a um bom tempo, mas mudei o jeito por vontade própria ao iniciar em OO, acho que dessa forma fica mais fácil identificar. Mas como disse, é somente o gosto, poderia sem problema algum criar a classe minha_classe e $meu_objeto. Só cuidado com a forma MinhaClasse, pois PHP faz distinção entre váriaveis maiusculas e minusculas.

Acho que podemos encerrar nossa introdução por aqui. Vamos à alguns exemplos mais práticos.

================================================================================

Já conheço, agora, como utilizo?

Vamos continuar então Sr. Classe :D Nosso próximo passo é desenvolver algo útil com essas benditas classes. Vou tentar mostrar no exemplo a seguir, uma comparação entre Programação OO e o Método "Normal". Vamos para o desenvolvimento de um mini carrinho de compras, talvez uma Cesta ^^.

<?php
class Cesta {
  var $Desconto;
  var $Preco      = array();
  var $Quantidade = array();

  function Cesta($desconto) {
    $this -> Desconto = $desconto;
    }

  function AdicionarItem($item, $preco, $quantidade) {
    if( isset($this -> Preco[$item]) ) {
      $this -> Quantidade[$item] += $quantidade;
      } else {
        $this -> Preco[$item] = $preco;
        $this -> Quantidade[$item] = $quantidade;
        }
    }
}

$MinhaCesta = new Cesta(10);
?>

CALMA, não desista, Objetos não é complicado, sei que deve ter parecido, mas veja com calma o exemplo:

- Do inicio até a linha 5, é o que vinhamos fazendo até agora, nada de novo.
- A função Cesta() está pedindo por uma váriavel $desconto, e essa função tem o mesmo nome que nossa classe, coencidencia? Não, de mandeira alguma, veja que ao chamar nossa classe na penultima linha, passamos um valor pela classe "10". Ao criar uma nova classe, ela automaticamente executa uma função com o mesmo nome que a classe. Então ao mesmo tempo executamos essa função e declaramos a váriavel Desconto com o valor 10. Que no final de tudo, essa será a porcentagem de descontos que o usuário ganhará em cima das compras.
- Já a função AdicionarItem() tem mais explicações sobre ela mesmo do que OO. Primeiro verificamos se já existe o item na nossa matriz, se ele existir, somamos o valor ao que já existe, se não existir, definimos o Preco[$item] com o valor que foi passado e atribuimos a quantidade que foi passada.

Como isso iriamo funcionar? Para adicionar itens ao nosso carrinho, fariamos dessa forma: (O script acima já está em nosso código)

$MinhaCesta -> AdicionarItem(1, 15.75, 10);

Somente executamos a função AdicionarItem passando os valores 1 para o código do item, 15.75 como o valor do item e 10 como a quantidade.

Vamos virar o angulo de nossa atenção e ver como isso seria pela maneira tradicional. Provavelmente você teria que utilizar um banco de dados, onde cada item que seria adicionado no banco teria um código do usuário e sempre que fosse necessário puxar os dados, teriamos que fazer consultas ao banco de dados.

Mas qual a vantagem de jogar dentro de uma váriavel e na próxima página perdeu tudo? Então utilizaremos uma váriavel que não seja perdida na próxima página, podemos declarar uma váriavel de sessão como nosso objeto:

$_SESSION['MinhaCesta'] = new Cesta(10);

Resolvido o problema? Então temos um script que ficaria fácil de fazer uma manutenção, e sem utilizar recursos do servidor para conexões e consultados ao banco de dados. Vamos ver agora algumas funções que poderiamos anexar nesse nosso código:

<?php
class Cesta {
  var $Desconto;
  var $Preco      = array();
  var $Quantidade = array();

  function Cesta($desconto) {
    $this -> Desconto = $desconto;
    }

  function AdicionarItem($item, $preco, $quantidade) {
    if( isset($this -> Preco[$item]) ) {
      $this -> Quantidade[$item] += $quantidade;
      } else {
        $this -> Preco[$item] = $preco;
        $this -> Quantidade[$item] = $quantidade;
        }
    }

  function RemoverItem($item, $quantidade) {
    if ( isset( $this -> Quantidade[$item] ) ) {
      if ( $this -> Quantidade[$item] >= $quantidade ) {
        $this -> Quantidade[$item] -= $quantidade;
        } else {
          $this -> Quantidade[$item] = 0;
          }
        } else {
          return false;
          }
    }

}

session_start();

$_SESSION['MinhaCesta'] = new Cesta(10);
?>

Implementamos uma função para remover alguns itens que desejarmos. Algo como, adicionamos 50 mas tenho dinheiro para comprar somente 30, então preciso remover 20. Nossa primeiro comparação da função é ver se o item já está em nossa cesta, se não estiver, essa função retorna FALSE. A segunda comparação é ver se existe o total a ser removido no carrinho. Não teria lógica remover 70 itens se só tenho 50, e ficar com -20, isso provavelmente iria acarretar em problemas na contagem final. Se ele não tiver o total a ser removido ele define a váriavel Quantidade como 0.

Já temos nossas mãos na cesta, podemos adicionar e remover itens que desejamos, agora nos resta somente contratar nosso caixa:

<?php
class Cesta {
  var $Desconto;
  var $Preco      = array();
  var $Quantidade = array();

  function Cesta($desconto) {
    $this -> Desconto = $desconto;
    }

  function AdicionarItem($item, $preco, $quantidade) {
    if( isset($this -> Preco[$item]) ) {
      $this -> Quantidade[$item] += $quantidade;
      } else {
        $this -> Preco[$item] = $preco;
        $this -> Quantidade[$item] = $quantidade;
        }
    }

  function RemoverItem($item, $quantidade) {
    if ( isset( $this -> Quantidade[$item] ) ) {
      if ( $this -> Quantidade[$item] >= $quantidade ) {
        $this -> Quantidade[$item] -= $quantidade;
        } else {
          $this -> Quantidade[$item] = 0;
          }
        } else {
          return false;
          }
    }

  function TotalCompras() {
    $soma = 0;
    while ( list($cod, $valor) = each($this -> Quantidade) ) {
      $soma += $this -> Quantidade[$cod] * $this -> Preco[$cod];
      }
    $soma -= $soma * ($this -> Desconto / 100);
    return $soma;
    }

}

session_start();

$_SESSION['MinhaCesta'] = new Cesta(10);
?>

Alguma dúvida sobre essa função? Uma simples para terminar. Somente percorremos toda a Matriz e calculamos a Quantidade de cada item * seu Proço unitário, aplicamos a porcentagem de descontos que o usuário tem e retornamos a Soma Total.


E como funcionaria todo o nosso script?

<?php
class Cesta {
  var $Desconto;
  var $Preco      = array();
  var $Quantidade = array();

  function Cesta($desconto) {
    $this -> Desconto = $desconto;
    }

  function AdicionarItem($item, $preco, $quantidade) {
    if( isset($this -> Preco[$item]) ) {
      $this -> Quantidade[$item] += $quantidade;
      } else {
        $this -> Preco[$item] = $preco;
        $this -> Quantidade[$item] = $quantidade;
        }
    }

  function RemoverItem($item, $quantidade) {
    if ( isset( $this -> Quantidade[$item] ) ) {
      if ( $this -> Quantidade[$item] >= $quantidade ) {
        $this -> Quantidade[$item] -= $quantidade;
        } else {
          $this -> Quantidade[$item] = 0;
          }
        } else {
          return false;
          }
    }

  function TotalCompras() {
    $soma = 0;
    while ( list($cod, $valor) = each($this -> Quantidade) ) {
      $soma += $this -> Quantidade[$cod] * $this -> Preco[$cod];
      }
    $soma -= $soma * ($this -> Desconto / 100);
    return $soma;
    }

}

session_start();

$_SESSION['MinhaCesta'] = new Cesta(10);

$_SESSION['MinhaCesta'] -> AdicionarItem("AF 1520", 17.90, 15);
$_SESSION['MinhaCesta'] -> AdicionarItem("AE 1735", 21.00, 5);
$_SESSION['MinhaCesta'] -> TotalCompras();
?>

Dessa forma, se conclui o exemplo de nossa Cesta de Compras. Agora vocês se perguntam:

- Pronto, fico bunito, mas só posso fazer isso com OOP?

Como comentei no inicio, tudo pode ser feito, qualquer script que você faria da maneira "convencional" poderia ser feito Orientado à Objeto. Para se ter uma idéia de alguns outros tipos que podem ser bastante úteis é nas Manutenções gerais de um site, upload de arquivos, murais de mensagens/recados, ...

Muitos scripts podem ser criados, de asas a sua imaginação ;)

E para quem gosta de repassar seus scripts, o que ficaria mais fácil, passar esse trecho de um código:

class Cesta {
  var $Desconto;
  var $Preco      = array();
  var $Quantidade = array();

  function Cesta($desconto) {
    $this -> Desconto = $desconto;
    }

  function AdicionarItem($item, $preco, $quantidade) {
    if( isset($this -> Preco[$item]) ) {
      $this -> Quantidade[$item] += $quantidade;
      } else {
        $this -> Preco[$item] = $preco;
        $this -> Quantidade[$item] = $quantidade;
        }
    }

  function RemoverItem($item, $quantidade) {
    if ( isset( $this -> Quantidade[$item] ) ) {
      if ( $this -> Quantidade[$item] >= $quantidade ) {
        $this -> Quantidade[$item] -= $quantidade;
        } else {
          $this -> Quantidade[$item] = 0;
          }
        } else {
          return false;
          }
    }

  function TotalCompras() {
    $soma = 0;
    while ( list($cod, $valor) = each($this -> Quantidade) ) {
      $soma += $this -> Quantidade[$cod] * $this -> Preco[$cod];
      }
    $soma -= $soma * ($this -> Desconto / 100);
    return $soma;
    }

}

Ou uns 10-15 arquivos?

================================================================================

Conclusão

Sei que passei rápido demais o assunto sobre OO, mas acredite, não há muito o que se explicar. Isso é um método de programação, não uma função ou algo assim, que possa ter detalhes, exemplos ou mais coisas. Confesso que da forma que passei isso, restringue a pessoas que tenham já algum conhecimento em PHP, mas realmente, você primeiro precisa aprender PHP, para depois passar para OO, como espera criar funções e tudo mais se está apenas começando? Tudo ao seu tempo.

A intenção desse tutorial não é mudar o jeito de todos programar, pessoalmente, devo ter nem 30% dos meus trabalhos feitos OO. Como iniciei o tutorial, não há uma vantagem de um método sobre o outro, em alguns casos OO pode ser melhor e em outros a maneira convencional pode ser a melhor forma.

Com certeza, muitas dúvidas ficaram, expliquei um método de programação em 10 segundos... Espero somente desse tutorial é que, quem se interessar por OO, realmente tente desenvolver alguns mini projetos, e a qualquer dúvida, há várias pessoas aqui para lhe ajudar ;)

Mas acredite em uma coisa, saber quando, onde e porque utilizar OO é muito mais díficil que aprender a programar em OO.

Então, como diria alguém que mata 2 leões por dia com as unhas e dentes...

"Let the carnage begin" - Stormbringer

Reajustado por: bimonti

Attached Files


Edição feita por: Eclesiastes, 12/06/2006, 11:02.

Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#2 thiagorsl

thiagorsl

    Ex-admin xD

  • Ex-Admins
  • 1151 posts
  • Sexo:Não informado
  • Localidade:Sampa
  • Interesses:http://sermaldito.amovoce.net/

Posted 22/07/2004, 15:02

Eu queria um tutorial naum que escrevesse um livro :blink:

Eu vou ser obrigado a copiar e ir lendo aos poucos aguarde logo + eu coloco minhas dúvidas :rolleyes:

Pendurado pq um tuto desse merece um destaque assim como você kra :wub:

Só digo uma coisa MESTRE

#3 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 22/07/2004, 15:18

Bem lembrado sobre copiar e colar, tenho um txt aqui com o tuto, escreve isso ai tudo no fórum e desse qlq coisa q perdesse, ia da xxxxxx :P

Ta anexado ali ja ;)
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#4 Marcão

Marcão

    Marcãaaaaaaaao

  • Usuários
  • 1754 posts
  • Sexo:Não informado
  • Interesses:Faixa preta de Muay-Thay<br>Faixa Roxa de Jiu-Jitsu<br>:D<br>Um dia eu chego lá

Posted 23/07/2004, 12:02

Isso é coisa de DOIDO!!
parece facil,mas não entendi muito bem
:-(
como que eu chamo essa classe???
eu executo e aparece uma pagina em branco!!

Edição feita por: Marcão, 23/07/2004, 13:13.

Marcão -=- PHP é coisa de MESTRE e falo mais nada -=-
Minha Foto
"Não temas,segue adiante,não olhes para trás!!
Segura na mão de
Deus e vai.."

#5 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 23/07/2004, 13:36

Você leu? Isso ai não é nada pronto que vai montar um e-commerce automático, ou algo assim, é a explicação sobre como programar em OOP, a única saída desse script é, caso coloque, o valor total do carrinho de compras.
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#6 Marcão

Marcão

    Marcãaaaaaaaao

  • Usuários
  • 1754 posts
  • Sexo:Não informado
  • Interesses:Faixa preta de Muay-Thay<br>Faixa Roxa de Jiu-Jitsu<br>:D<br>Um dia eu chego lá

Posted 23/07/2004, 13:39

Você leu? Isso ai não é nada pronto que vai montar um e-commerce automático, ou algo assim, é a explicação sobre como programar em OOP, a única saída desse script é, caso coloque, o valor total do carrinho de compras.

hehehehe
isso é para vc ver como eu entendi!! :wacko:
gravei aqui em um txt,vou estudar mais essa tal de Oop!!
Thanks!!
Marcão -=- PHP é coisa de MESTRE e falo mais nada -=-
Minha Foto
"Não temas,segue adiante,não olhes para trás!!
Segura na mão de
Deus e vai.."

#7 MarviN*

MarviN*

    nw . newton web

  • Usuários
  • 780 posts
  • Sexo:Não informado
  • Localidade:Brasília - DF

Posted 23/07/2004, 15:04

Sugestão pro XPlayer.. edite o tutorial, ao invés de usar o [ QUOTE ], coloca [ PHP ] (sem os espaços né).. assim o Invision colore as variaveis e etc.. fica mais legível pra galera ae! ;).


Sugestão pra quem leu ou vai ler o tutorial:

Experiência própria.. eu programo PHP desde 2001 e desde que comecei, sempre me enrolei pra separar código PHP do Html. No início, eu fazia todas as saídas com o print.. até print "<html><body>"; eu devo ter feito! :D. Depois, comecei a separar os blocos.. então misturava html mesmo com várias aberturas de tags php (<?php ... ?>). Evolui, mas ainda assim, se eu ficasse mais de 2 meses sem mexer no código, complicava depois pra entender. Finalmente aprendi a mágica da utilização das funções. Eu fazia um arquivo único com as funções que eu precisava, e inseria só as chamadas pra essas funções.. melhorou bastante, mas as funções não interagiam uma com as outras.

Até que um amigo, programador em Delphi, sugeriu que eu estudasse OO. Recentemente comecei a estudar e vi que com OO, eu poderia fazer o sistema utilizando as funções (métodos em OOp) e que elas poderiam interagir uma com as outras facilmente, e eu poderia expandir essas funções facilmente, manter o código e etc. Sem contar na facilidade de separar o código HTML e PHP.


Por que estou escrevendo esse relato? Por que eu tinha muita dificuldade, assim como o XPlayer falou, de entender a verdadeira funcionalidade da programação OO. Eu fazia tudo com funções e tudo funcionava bem.

Se você está nessa.. baixe uma versão deste fórum (Invision Power Board) e dá uma olhada por cima nos códigos.. não se aprofunde, até mesmo por que não dá!! Mas abrindo alguns arquivos você verá como é bonito o código Orientado a Objeto.. heheheh.. foi assim que eu me interessei e resolvi de vez programar OO.
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
[ Blog Desenvolvimento Web: http://www.newtonwagner.net/blog ]
[ Diário da Selva: http://www.diariodaselva.com/ ]

[ "Não existe um caminho para a paz; a paz é o caminho." Mahatma Gandhi ]

#8 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 23/07/2004, 15:48

Sugestão aplicada ;)
Por algum motivo, que não me lembro mais, eu coloquei QUOTE invés de PHP, mas como falei, não lembro :P Acho que porque quando a saída era html ele fica uma cor ruim, ou porque fica muito espaçamento...
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#9 gulliva

gulliva

    Normal

  • Usuários
  • 62 posts
  • Sexo:Não informado
  • Localidade:Porto Alegre
  • Interesses:Dinheiro!

Posted 28/07/2004, 00:43

Tipo , eu ja faço uma boa parte de meus scripts com functions,
mas quero expandir isso...

Entendi direitinho o funcionamento do POO, mas tipo , eupensei e pegei abri o dw e disse:
- "Agora irei fazer um sistema de login utilizando POO".

Cara , não tive idéia nenhuma. Talvez eu esteja pensando num exemplo que não necessite de POO... Tipo , como vcs usarião Poo num sistema desses ?

VLW!
Muito Bom o script.
Galeria De Imagens COMPLETA E FREEWARE!
http://agaleria.clic3.net

#10 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 28/07/2004, 02:44

Para trabalhar com POO, é importante que você não tenha somente conhecimento PHP, e sim também da lógica do que quer fazer... Exemplo do sistema de login:

<?php

  class Sistema_Login {
   
    var $login;
    var $senha;
   
    // Construtor ao estilo PHP 4
    function Sistema_Login() {
     
      // Instruções para receber os dados
     
    }
   
    function Valida_Dados() {
     
      // Instruções para validar os dados
     
    }
   
    function Conecta_mySQL() {
     
      // Instruções para conectar ao mySQL
     
    }
   
    function Verifica_mySQL() {
     
      // Instruções para verificar as informações junto ao mySQL.
     
    }
   
  }

?>


Classes nada mais são do que um conjunto de funções, logicamente organizadas.
Klaus Paiva
Conheça também: Taperás

#11 paes

paes

    GustavoPaes.Net

  • Usuários
  • 1393 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:Rumo ao topo!

Posted 28/07/2004, 15:45

cara... muito bom esse tuto
fiz ele aqui e deu certinho, e vou começar a usar em tudo OO...

só uma coisinha, vc não iniciou a sessão neste código :)
coloca ai: session_start();

só isso, o resto perfeito :)

FLW

-- EDITADO --
ah... outra coisa que esqueci de falar, não sei se estou certo, mas é que fiquei na dúvida:

em vez de:
PHP
<?php


function RemoverItem($item, $quantidade) {
if ( isset(
$this -> prod_quantidade[$codigo] ) ) {


?>


não seria:
PHP
<?php


function RemoverItem($item, $quantidade){
if(isset(
$this -> Quantidade[$item])){


?>


???

FLW

Edição feita por: paes, 28/07/2004, 15:47.

Site: GustavoPaes.net

^ Rumo ao Topo ^

#12 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 29/07/2004, 08:12

Opa, é sim :P

O RemoverItem() estava mesmo errado, valeu pelo toque ;)
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#13 ThalesWeb

ThalesWeb

    Veterano

  • Usuários
  • 1435 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 29/07/2004, 20:27

Está muito bom o Tuto Xplayer! Só que não está completo, faltam algumas coisas como extends, etc. Vou fazer um tutorial sobre OOP também! :D :P
Thales Santos

#14 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 30/07/2004, 08:07

Está muito bom o Tuto Xplayer! Só que não está completo, faltam algumas coisas como extends, etc. Vou fazer um tutorial sobre OOP também! :D :P

Ótimo, esse aí foi um inicial apenas, com um outro explicando as classes e sub-classes, parent, extend, como as funções funcionam dentro de sub-classes, iria completar o pacote (y)
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#15 H²O

H²O

    Turista

  • Usuários
  • 41 posts
  • Sexo:Não informado

Posted 03/08/2004, 09:06

Baseado nesse Tutorial de OOP olha oque eu fiz


<?
#Classe de tratamento de arquivos .txt
$arquivo = 'usuarios.txt';

class TXT {

 var $existe;
 var $NumeroLinhas;
 var $leitura;
 var $UpExiste;

 function ExistenciaArquivo($file) {
          if (file_exists($file))
          $this -> existe = 1;
          else
          $this -> existe = 0;

}
 
 function AbrirArquivo($file, $permissao) {
          $this -> ponteiro = fopen($file, $permissao);
 
}


 function LerArquivo($file) {
          $this -> Leitura = fread($this -> ponteiro, filesize($file));
          echo $this -> Leitura;
}

 function GravarUPArquivo($user, $password) {
          fwrite($this -> ponteiro, "$user|$password\r\n" );
}
 function VerificaUP($user, $password, $file) {
          $pontero	=	file($file);
          $NTL = count('$arquivo');

          for($i = 0; $i < $NTL; $i++) {
                 $exp    =    explode("|", $pontero[$i]);
                 $PTU    =    trim($exp[0]);
                 $PTS    =    trim($exp[1]);
                 $PMD5   =    md5($password);
                 
                 if( ($user == $PTU) && ($PMD5 == $PTS) ) {
                     $this -> UpExiste = 1;
                     } else {
                     $this -> UpExiste = 0;
                     }
                     

                 }
 }


}

Não tá completo é so um trexo do código, li esse tutorial em seguida fiz, mais não sei se ta orientado a objetos o meu ai mais pelomenos parte tá :P, depois vo aprimorar minha classe de arquivos TXT :P
Se hulmides quando quiseres adquirir a sabedoria, se mais ainda quando a tiver adquirido.
H²O¹




2 user(s) are reading this topic

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


    Bing (1)
IPB Skin By Virteq