NOME DURAÇÃO
Curso PHP
Abertura do Curso de PHP
Visão Geral do PHP
Ambiente de Desenvolvimento PHP
Servidor Web PHP
Como instalar o WAMP no Windows - Curso de PHP
Instalando PHPStorm no Windows
URL e Apache com PHP
Hello World em PHP
Executando Scripts em PHP
TAG PHP
Montagem do HTML com PHP
Montagem do HTML com PHP II
Comentários em PHP
Definições da Linguagem PHP
Variáveis em PHP
Variáveis em PHP II
Nomenclatura de Variáveis em PHP
Operadores Aritméticos em PHP
Tipos de Dados do PHP
Módulo da Divisão em PHP
Tomada de Decisão em PHP
Tomada de Decisão - Estrutura else
Ambiente para Estudo PHP
Números Pares e Ímpares em PHP
A instrução elseif
Operadores Relacionais em PHP
Operadores Relacionais Parte II
Operadores Lógicos em PHP
Tela de Login e Senha com PHP
Introdução às Estruturas de Repetição em PHP
Instrução While em PHP
Introdução do-while em PHP
do-while - caso de uso com PHP
Script em Looping em PHP
Atribuição vs Comparação vs Identico em PHP
Operadores de Atribuição Compostos em PHP
Operadores de Incremento e Decremento em PHP
Estrutura de Repetição for do PHP
Estrutura de Repetição for do PHP (parte II)
Tabuada em PHP
Instrução break em PHP
Instrução continue em PHP
Operação Ternária em PHP
Operação Ternária em PHP (parte II)
Estrutura de Seleção Múltipla switch em PHP
Estrutura de Seleção Múltipla switch em PHP (parte II)
Precedência e Associatividade de Operadores em PHP
Constantes em PHP
Variáveis Variáveis em PHP
Introdução aos Arrays em PHP
Arrays Indexados em PHP
Definindo, Incluindo, Alterando e Excluindo elementos em PHP
Função range() em PHP
Iterando Arrays em PHP
Estrutura foreach em PHP
O foreach em PHP - Como usar?
Estrutura foreach - alterando valores internos
Arrays Associativos em PHP
Arrays Multidimensionais em PHP
Manipulação de Arrays em PHP
Introdução às Funções em PHP
Definindo parâmetros em PHP
Parâmetros default com PHP
Lista de Parâmetros em PHP
Lista de Parâmetros em PHP II
Funções variádicas em PHP
Retorno de Valores pela função em PHP
Funções e Escopo de Variáveis em PHP
Parâmetros por Referência em PHP
Parâmetros por Referência em PHP II
Parâmetros Tipados em PHP
Valores de retornos de funções tipados em PHP
Null Coalescing Operator em PHP
Operador SpaceShift em PHP
Importação: include() e require() do PHP
Introdução às Funções Anônimas em PHP
Escopo de nomes das funções anônimas em PHP
Funções Anônimas na Prática com PHP
Funções Anônimas e Arrays com PHP
Introdução às Strings em PHP
Aspas Duplas vs Aspas Simples em PHP
String Aspas Duplas em PHP
String heredoc e nowdoc em PHP
Funções para Manipulação de Strings em PHP
Introdução às Requisições Web em PHP
Método GET em PHP
Formulários HTML e PHP
Método POST com PHP
Variáveis superglobais do PHP
A Orientação a Objetos em PHP
Primeira Classe em PHP
Membros de Classe em PHP
Criação de Objetos em PHP
Acessando Membros de Classe em PHP
Implementando Comportamentos de Classe com PHP
Pseudo-variável $this em PHP
Gerenciando Atributos de Classe em PHP
Construtores em PHP
Construtores Personalizados em PHP
Destrutores em PHP
Encapsulamento em PHP
Encapsulamento em PHP (parte II)
Herança em PHP
Herança com PHP II
Modificadores de Acesso em PHP
Visibilidade das Funções em PHP
Funções Modificadoras em PHP
Sobrescrita de Funções em PHP

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);


Tags curso, php, programação orientada a objetos, poo, classe, objeto, instância, blog

Comentários

comments powered by Disqus