Curso de PHP Orientado a Objetos – Parte 2

Slide1Segundo artigo do curso de PHP Orientado a Objetos. Dessa vez aprenderemos sobre os métodos. Veremos também na prática os métodos de inicialização (construtor) e finalização (destrutor).

Dando continuidade a nosso curso.
Esta é a segunda parte do curso de PHP Orientado a Objetos. 
Clique aqui para conhecer a primeira parte.

Ao final deste artigo, você será capaz de:

  • Criar métodos para suas classes
  • Entender melhor a criação dos objetos
  • Entender o método construtor e destrutor

    Vamos agora criar uma classe chamada Pessoa:
 

Agora vamos criar uma instância de pessoa:

Agora vamos preencher seus atributos:

Podemos verificar os valores inseridos da seguinte forma:

Agora vamos criar um método para a classe Pessoa, que trabalhará com as propriedades do objeto. O método terá o nome MostrarPessoa() e basicamente servirá para mostrar os dados do objeto.
Lembre-se que método age dentro do escopo da classe.
Classe alterada:

Temos um novo conceito apresentado aqui. Trata-se da pseudo-variável $this, que serve basicamente para diferenciar as propriedades do objeto de variáveis locais. Lembre-se, $this referencia o objeto ATUAL e acessa suas propriedades.
Agora vamos novamente reescrever o objeto Pessoa executando o método MostrarPessoa():

Quando o método for executado,  todos os dados do objeto P1 serão mostrados na tela.
Perceba que para criar um método, iniciamos com a palavra reservada public (isso em PHP 5, falaremos a respeito dessa funcionalidade no decorrer do curso, por enquanto, entenda como o parâmetro que define a visibilidade do método), seguido da palavra reservada function e o nome do método.


A grosso modo, podemos dizer que métodos são funções que agem dentro de uma classe.
É importante salientar que da mesma forma que criamos $p1, poderíamos criar $p2, $p3 e etc, todos com características (atributos) diferentes, mas executando o mesmo método MostrarPessoa().


Vamos utilizar de um exemplo clássico para diferenciarmos classe de objetos:
Uma classe é como uma receita de bolo. Não comemos a receita de bolo, não é verdade? A utilizamos como referência para prepará-lo. A função da classe é semelhante a receita do bolo: Criamos um objeto bolo a partir das especificações da receita.


Voltando aos métodos, vamos agora modelar uma classe um pouco mais completa, ela se chamará conta, e terá os métodos Sacar, Depositar e ObterSaldo.

É importante notar que o método Depositar e o método Sacar recebem valores e esses são atribuidos as variáveis do objeto.
O método ObterSaldo não recebe nenhum valor, ele apensa retorna (return) o valor atual da variável $saldo.
Executando o código:

É mostrado o valor 5400, retornado pelo método ObterSaldo.


Método Construtor


O Construtor é um método (assim como o método Depositar, Sacar e ObterSaldo) executado toda vez que um objeto é instanciado a partir de uma classe. Geralmente é utilizado para executar procedimentos de inicialização de atributos do objeto. Quando é executado o comando $x =  New… é automaticamente chamado o método construtor daquela classe.
Perceba que na classe Conta que criamos anteriormente, não criamos o tal método construtor, neste caso, as propriedades do objeto são inicializadas com o valor NULL, daí a necessidade de atribuir valores a todas as propriedades (Cliente, Agencia, Conta e Saldo).


Método Destrutor


Também é um método especial e é executado sempre que atribuímos o valor NULL a um objeto ou quando utilizamos a função unset() e em última instância, quando o programa é finalizado. Este método é comumente usado para apagar arquivos temporários, finalizar conexões e etc.


A seguir vamos criar o método construtor e destrutor para a classe Conta que criamos anteriormente:

Perceba que um construtor é definido pelo método: __construct() (usa-se dois underscores __) e no caso da classe conta, ele foi responsável por definir todos os atributos do objeto.
Vamos agora criar o objeto:

Criamos o objeto conta em $conta1, e no momento de sua criação enviamos os parâmetros que o construtor precisa para preencher os respectivos atributos.


Na imagem abaixo é possível identificar a relação do construtor com o memento de criação do objeto:

Construtor recebendo os parâmetros



Na próxima aula apresentaremos a herança e o conceito de polimorfismo.
Utilize o espaço de comentários para tirar suas dúvidas.
Até a próxima.


24 Responses to Curso de PHP Orientado a Objetos – Parte 2

  1. Vitor disse:

    Excelente, quando tiver aula de Jquery favor entrem em contato pelo email

  2. Lucas disse:

    Muito boa a iniciativa e a materia ta me salvando…

    Obrigado pessoal continuem com este espirito.

  3. Waister Nunes disse:

    Cara, parabéns pelos tutoriais!
    Eu fico só com uma dúvida, não necessariamente ligada a essa parte do curso…
    Quando eu vou criar um projeto usando OO, por questão de organização ou de convesão, eu crio um arquivo pra cada classe?
    Grato!

    • rafael moura disse:

      Amigo, na minha modesta opinião, seria interessante é bem mais fácil depois vc manutenir ou corrigir erros quando vc cria arquivos específicos para cada ocasião, um exemplo bem simples é um sistema de login, tem pessoas que fazem do jeito que lhes acham melhor….cria-se um arquivo apenas para conexao com DB, outro para fazer o CRUD, outro para validar o e-mail, outro para validar a senha, bem isso depende muito de cada um, eu prefiro fazer assim…..

  4. Pedro disse:

    parabens pelo site e pelas aula de PHP OO to gostando, to anotando os exemplos no caderno e depois eu faço na pratica, faço isso como forma de entender e memorizar alguns comandos

  5. Pedro disse:

    Olá

    fiz o exemplo aqui e quando fui executar no navegador chrome da um erro no servidor dizendo q não foi carregado, mas o servidor local ta funcionando normal e no firefox aparece a pagina em branco, poderiam me ajudar com isso

  6. Isaac disse:

    Muito Bom Trabalho! Nota 10.

  7. Bruno disse:

    Olá amigos.
    Primeiramente parabéns pela iniciativa, é bem louvável.
    Só tenho uma observação a fazer. Na linha 20 do último exemplo (onde consta a classe Conta), no método construtor da classe você referencia um atributo inexistente: “$this->Cancelada = $status”, o certo, de acordo com o exemplo seria: “$this->Status = $Status”. Da maneira que está hoje não dá erro, porém, se você quiser imprimir o que tem no atributo “Status” você não conseguirá.

    Abraços e muito obrigado pelo material disponibilizado.

  8. F-1 disse:

    Ola meus caros,
    Quero parabenizar pelo material mas olha o meu __destruct dispara automáticamente

  9. Raí Vieira Adriano disse:

    Muito bom esse curso, excelente mesmo..
    Só notei um pequeno erro, no método construtor, você está setando o objeto $this->Cancelada. Não deveria ser $this->Status?
    Caso eu esteja enganado, peço desculpas…

    Vlw, sucesso….

  10. Charles disse:

    Porque não foi colocado a visibilidade dos métodos(public, private ou protect): Sacar, Depositar, Obtersaldo ??

    Sendo que no metodo MostrarPessoa tivemos…. pq uns tem e outros não?

    Essa foi a minha dúvida.

    • André Vieira disse:

      Em php, a opção default atribuído a uma função é public.

    • rafael moura disse:

      Amigo, tbm estou acompanhando aqui o curso, e, eu acredito que por questão de o autor não abordar ou atentar tanto para o assunto de encapsulamento e visibilidade, acho que o foco disso será mais para frente, tendo em vista que tem pessoas que ainda estão aprendendo

  11. Fernando disse:

    Muito bom…
    Estou pesquisando algum livro sobre o assunto, aconselha especifico?

  12. Bruno Alberto disse:

    Cara posts muito bacanas, trabalho com PHP mas estudo muito Java e está me salvando abraço.

  13. João Lucas Guedes de Oliveira disse:

    Olá,

    Estou começando em php e estou gostando dos seus artigo.

    Quando abro o arquivo php com a classe Pessoa ele dá esse “Warning: Creating default object from empty value in” mas logo em seguida imprime o echo normalmente, dei uma pesquisada mas não entendi muito bem, teria como explicar como tiro tal warning?

  14. Marcelo disse:

    Ótimo tutorial,

    Eu tenho um dúvida é boa prática se todo método construtor eu colocar um destrutor ? Ou somente faço isso quando for abandonar o sistema ?

  15. uhelliton disse:

    Excelente Iniciativa.
    Obrigado por está compartilhando esse rico material.

    Deus o abençoe.

  16. Vinicius Faria disse:

    Leandro de Castro, sensacional este material que você disponibilizou. Estou absorvendo tudo de forma bem tranquila e agradável. Parabéns pelo ótimo trabalho!

  17. Joel disse:

    Segui os passos dados resultou nesse código, obrigado.

    Cliente = $Titular;
    $this->Agencia = $Agencia;
    $this->Conta = $Conta;
    $this->Saldo = $Saldo;
    //$this->Cancelada = $Status;
    $this->Status = $Status;
    }

    /* Método Destrutor
    * Finaliza os objetos
    */

    function __destruct(){
    echo “”;
    echo ” O Objeto foi destruído. “;

    }

    /* Método Sacar()
    * Diminui o saldo em quantia
    */

    function Sacar($quantia){

    if( $quantia > 0 ){

    $this->Saldo -= $quantia;

    }

    }

    /* Método Despositar()
    * Deposita uma quantia, acrescendo o saldo
    */

    function Depositar($quantia){

    if( $quantia > 0 ){

    $this->Saldo += $quantia;

    }

    }

    /* Método ObterSaldo()
    * Retorna o saldo da conta
    */

    function ObterSaldo(){

    echo “Saldo atual: “;
    return $this->Saldo;

    }

    }

    $conta1 = new conta(“Jose da silva”, “0144″, “07126934-24″, 5000, “ativa”);
    echo $conta1->ObterSaldo();
    //$this->Status = $Status

    ?>

  18. Ralf disse:

    Estava quase desistindo de aprender PHP OO, até agora estou conseguindo compreender. Parabéns pelo excelente trabalho ;)

  19. Silvio Melo disse:

    Muito obrigado pelo curso!!
    Esta me ajudando muito no itendimento de OO!!
    Valeu!!!

Deixe uma resposta para Joel Cancelar resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *