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 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 o acesso a membros de classe, como devemos implementar, quais as restrições que devemos impor e demais características dessa definição.

O QUE SÃO MEMBROS DE CLASSE

Um membro de classe é toda variável ou função definida e implementada pela classe. Assim, temos que todos os atributos e métodos que estiverem definidos numa classe são chamados de "membros de classe". Para acessarmos os membros de uma classe, temos que utilizar a seguinte nomenclatura:

referência + nome_membro
referência -> nome_membro

Temos sempre que pensar no conceito de referência, ou seja, uma variável é somente uma referência a um objeto. Assim, temos que todas as instância que criarmos de uma classe poderão acessar os membros públicos através da definição acima.

O CONCEITO DE REFERÊNCIA

Referência é para o PHP o que o endereço é para o C++, ou seja, um valor que está apontando para uma região em que há informações armazenadas. O conceito de referência em PHP não é explicito, até porque, não conseguimos obter esse endereço facilmente. Mesmo assim, não é difícil imaginar que tudo precisa estar armazenado em algum lugar, logo, a referência é a nomenclatura que utilizamos de forma genérica para dizer que a variável A está ligada a determinada informação.

É preciso entender que toda variável está armazenada na memória, bem como todo objeto. Entendido isso, é preciso entender que é utilizado uma variável para guardar a região em que determinado objeto está armazenado. Logo, você talvez se pergunte quem armazena o local de memória em que as variáveis estão, e a resposta é: o interpretador, a máquina virtual do PHP.

Se entendido o conceito de referência, o conceito sobre a variável this fica fácil de ser compreendido, até porque, está é uma variável que é criada para cada novo objeto e, só pode ser utilizada para o acesso de dentro do escopo da classe. Por isso é que dizemos que a pseudo-variável $this sempre estará se referindo a classe em que estamos trabalhando.

//internamente
$this->nome_do_membro;

//externamente
$variavel->nome_do_membro;

ACESSANDO MEMBROS DE CLASSE

Todo objeto criado é único, ocupa um espaço reservado na memória, possui uma referência que o identifica e, por essas definições, tem-se que todo objeto é diferente dos demais e seus atributos,, no caso, as variáveis definidas pela classe, também serão únicas e ocuparão um espaço reservado de memória.

Quando criamos 2 objetos de uma mesma classe, cada um possuirá um endereço que o identifica na memória e estes, não estarão compartilhando absolutamente nada - salvo se definirmos explicitamente o contrário.

Então, se tivermos uma classe que definiu 10 variáveis em seu corpo, nós teremos, a cada novo objeto, 10 variáveis pra cada nova instância criada. E essas 10 variáveis que, estão contidas em cada um dos objetos, só poderão ser acessadas através da variável que possui a referência para o objeto. Logo, é possível deduzir que para fazer acesso a um membro de um objeto é preciso, antes de mais nada, especificar a qual objetos estamos nos referindo.

ACESSANDO ATRIBUTOS DE OBJETO

Definimos uma classe, criamos objetos, porém, até agora, não atribuimos valores às variáveis definidas na classe e que, estão disponíveis em cada instância.

Um objeto pode ser utilizado de várias maneira e para diferentes propósitos, assim, podemos trabalhar com objeto para encapsular informações ou então, para simplesmente agruparmos um conjunto de variáveis. Dessa forma, temos que todos atributos contidos num objeto, passam a ser acessado através de um namespace, isto é, um nome que o identica dentro de um projeto, até porque, é dessa maneira que somos obrigados a acessar os membros de classe.

Para entender o que foi dito acima, vamos pensar inicialmente que ao criarmos um objeto é preciso dizer onde a classe deste está definida, ou seja, programada. Toda classe está definida dentro de arquivos de código com extensão *.php e todo arquivo está, obrigatoriamente, contido dentro de uma pasta. O namespace de uma classe é o caminho PATH até o local onde o arquivo *.php está armazenado mais o nome da classe.

Podemos concluir que todo objeto existente é o resultado da execução de um projeto, a classe. Toda classe está contida num arquivo *.php e todo arquivo *.php está contido numa pasta. Logo, temos de dizer, no momento de criação de um objeto, o namespace da classe. Porém, para acessarmos os membros de um objeto, bastará utilizarmos a referência e em seguida, especificar o nome do membro que desejamos acessar.

É importante lembrar que só é possível acessar membros públicos!

O acesso aos atributos públicos de um objeto ocorre de maneira análoga a forma em que manipulamos variáveis, porém agora, temos de especificar em qual instância a variável que desejamos alterar está contida.

Para acessar um membro de um objeto, temos de especificar 2 coisas:

  1. Qual objeto
  2. Qual o membro

Utilizamos o operador de objeto, comumente chamado de operador seta para acessarmos membros públicos, como temos no exemplo seguinte:

$objeto_nome -> propriedade_nome;

O esquema sempre será o mesmo quando formos acessar as funções definidas pelas classes. Inicialmente informamos o objeto, em seguida colocamos o operador seta e por fim, definimos o nome da função [ funcionalidade ] que queremos invocar.

$p1 = new Pessoa(); #criando um objeto de Pessoa e atribuindo a referência à variável $p1
$p2 = new Pessoa();
$p1->nome = "João"; #acessando a variável $nome
                    # definida pela classe Pessoa e por isso,
                    # contida na instância $p1
$p2->nome = "Maria";

A utilização de objetos para gerar HTML é igual a forma com geramos páginas fazendo uso de variáveis. A diferença é que agora a variável que utilizaremos é, na verdade, um atributo de um objeto e, para extrairmos seu valores, invocaremos uma função que foi definida para este fim.

No exemplo acima, criamos objetos, definimos seus atributos e por fim, extraímos as informações dos objetos criados. Mesmo que o exemplo feito não tenha qualquer utilidade prática, o conceito envolvido mostra o uso comum de objetos e geração de HTML.

INICIALIZANDO MEMBROS DE CLASSE

Muitas propriedades de objetos precisarão ter valores iniciais para que tudo funcione corretamente. Todas as propriedades que precisam definir valores iniciais, precisaram ter seus valores atribuídos em sua declaração.

class Quadrado
{
    public $x = 5, $y = 10;
}

EXEMPLO FEITO EM AULA

#ACESSANDO MEMBROS DE CLASSE

class Pessoa{
    public $idade = 0;
}

$p1 = new Pessoa();
$p2 = new Pessoa();

$p1 -> idade = 22;
$p2 -> idade = 15;

echo $p1 -> idade . "\n";
echo $p2 -> idade;


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

Comentários

comments powered by Disqus