Nesta aula estudaremos a criação de novos objetos através das classes que definimos em PHP. Aprenderemos as diferenças entre classe, objeto e instâncias, bem como as demais definições envolvidas. |
CRIANDO OBJETOS E ACESSANDO MEMBROS DE CLASSE
As classes são os projetos de como os objetos devem funcionar quando criados. Então, temos que entender que a classe é o nosso código propriamente dito e, para que este tenha alguma utilidade, precisamos criar uma instância do mesmo. Observe que na orientação a objetos, instância e objeto são sinônimos.
Se consultarmos o dicionário Aurélio o significado de instância, teremos varias definições, dentre estas há o significado de instância na computação e o mesmo diz que:
[Informática] Cada um dos objetos criados durante a execução de programa. |
Podemos concluir que, executar o código da nossa classe significa criar novos objetos.
CONCEITOS IMPORTANTES
Em qualquer disciplina que estudamos há um conjunto de princípios a serem estudados e entendidos e, com a orientação a objetos não é diferente. A grande maioria dos conceitos que estudaremos terão significado igual a de outras disciplinas, como por exemplo, o conceito de herança, logo, o que precisamos realmente entender e memorizar constitui um conjunto bastante diminuto.
A seguir temos a definição de 3 conceitos e, talvez, os mais importantes, haja vista que todos os demais, derivam destes.
a) CLASSE Projeto composto por código de programação. Quando executado executado origina um objeto.
b) OBJETO Execução do código da classe.
c) INSTÂNCIA Sinônimo de objeto. Essa é uma forma genérica para nos referirmos a objetos criados.
É muito importante entender que as variáveis não são objetos e nem instâncias, elas somente nos proporcionam uma forma para acessarmos as instâncias que estão na memória. Por isso, é errado dizer que uma variável é, por exemplo, um Carro, partindo do princípio de que temos a classe Carro.
Para criarmos um objeto, temos que utilizar a instrução new e então, definir o nome da classe que desejamos um objeto. A instrução new tem como objetivo, informar que desejamos executar o código da nossa classe e também, que queremos a instância dessa nova classe.
A instrução new sempre retornará a instância do objeto criado, salvo se ocorrer erros no momento da criação.
ACESSANDO OBJETOS E SEUS MEMBROS
Quando criamos um objeto precisamos ter uma forma para acessar o mesmo, por isso, é comum atribuirmos na declaração de criação de objetos, uma variável que receberá a instância do mesmo. Isto é, a criação de novos objetos estará numa instrução de atribuição, onde o lado direito será a criação do objeto e o lado esquerdo a variável que receberá o endereço da instância criada. Em outras palavras, iremos criar um objeto e ao mesmo tempo atribuir o mesmo (a nova instância) a uma variável. Por fim, temos que entender que as variáveis representam uma forma fácil para o acesso a memória, por isso vinculamos variáveis a objetos.
Também é importante observar que, se a instância retornada não for armazenada numa variável no momento da criação, não será mais possível acessar o objeto criado, ou seja, criar um novo objeto e não atribuir a instância, significa, executar o código de inicialização do objeto e em seguida, destruir o mesmo.
DESTRUIÇÃO DE OBJETOS
Um objeto será destruido todas as vezes em que não houver mais variáveis contendo sua referência, isto, que esteja referenciando-o. Dessa forma, temos que o PHP desalocará a memória de todos os objetos quando estes não mais tiverem utilidade. Se por acaso tentarmos acessar um objeto que foi destruído, temos que ocorrerá um erro e o Script PHP terá sua execução finalizada, até porque, o objeto não existe mais.
Porém, não se preocupe, o PHP sabe gerenciar muito bem a memória e também, consegue definir com bastante precisão o momento de remover cada instância da memória. Por isso, salvo em raras exceções, você irá ter problemas com a destruição de objetos que ainda estavam em uso.
$p1 = new Pessoa();
$p2 = new Pessoa();
GARBAGE COLLECTOR
O Garbage Collector é o responsável por desalocar a memória utilizada. A forma de funcionamento do mesmo se dá pelo compartilhamento de uma variável que, a cada nova variável que fizer referência a determinada instância, o valor da variável compartilhada é incrementado e, a cada instância referenciada por uma variável que for destruída, tem o seu valor decrementado. Quando este valor for igual a 0 a instância é removida da memória.
Observe que estamos falando em instância, isto é, em objetos e não em Classes. Logo, o Garbage Collector não gerencia a quantidade de instâncias criadas, mas sim, a quantidade de variáveis que apontam para uma instância!
Se você tiver dificuldade no entendimento deste conceito não há problema, até porque, basta saber que, todas as vezes que não houver mais variáveis fazendo referência a um objeto o mesmo será destruido!
EXEMPLO FEITO EM AULA
#CRIAÇÃO DE OBJETOS/INSTÂNCIAS
class Classe{
public $a = 1;
public $b = 2;
public $c = 3;
}
$objetoA = new Classe();
$objetoB = new Classe();
$objetoC = new Classe();
var_dump($objetoA);
//var_dump($objetoB);
//var_dump($objetoC);
unset($objetoA);
var_dump($objetoA);
VEJA TAMBÉM
- Aula 91: Primeira Classe
- Aula 92: Primeira Classe
- Aula 93: Criação de Objetos
- Aula 94: Acessando Membros de Classe
- Aula 95: Implementando Funcionalidades na Classe
- Aula 96: Pseudo variável $this
- Aula 97: Gerenciando atributos de Classe
- Aula 98: Construtor
- Aula 99: Construtores Personalizados
- Aula 100: Destrutores
- Aula 101: Encapsulamento I
- Aula 102: Encapsulamento II
- Aula 103: Herança I
- Aula 104: Herança II
- Aula 105: Modificadores de Acesso
- Aula 106: Visibilidade das Funções
- Aula 107: Funções Modificadoras
- Aula 108: Sobrescrita de Funções
Tags curso, php, programação orientada a objetos, poo, classe, objeto, instância, blog
Comentários
comments powered by Disqus