terça-feira, 27 de março de 2012

Curso de PHP Orientado a Objetos - Parte 7

imagem meramente ilustrativa
Este é o sétimo artigo do curso de PHP Orientado a Objetos.

Para conhecer as demais partes, clique aqui.

Ao final deste artigo, você será capaz de:
  • Entender o conceito de constantes na POO;
  • Entender o conceito de propriedades estáticas;
  • Entender o conceito de métodos estáticos.

As classes permitem armazenar valores de duas formas: constantes de classe e propriedades estáticas. Estes atributos são comuns em todos os objetos da mesma classe.

Constantes

Primeiro vamos definir o que é constante.
Uma constante é exatamente o oposto de uma variável, ou seja, algo que mantém seu valor até o final do script (salvo alguma exceções). Geralmente definimos uma constante perto do início do código ou em uma função.
A declaração de constantes é feita através da palavra-chave const. Para acessar constantes de classe fora do escopo dela, a seguinte notação é utilizada NomeClasse::Constante; e já dentro da classe, utilizamos a notação self::Constante. A palavra-chave self também pode ser utilizada para referenciar a própria classe.

Vamos analisar:

/* Vamos declarar uma  
* constante chamada pi
*/
class Funcoes{

  const Pi = 3.14;
}

/* Vamos herdar Funcoes 
* e criar outra constante
*/

class Aplicacao extends Funcoes{

  const Versao = 3.8;  

  function __construct($Nome){
    echo $Nome. "< br/>";
    echo self::Versao . "< br />";
    echo parent::Pi . "< br />";
    echo Funcoes::Pi . "< br />";  
  }
}


$sistema1 = new Aplicacao("CafeeSoftware");

Perceba que acessamos a constante Pi tanto pela sintaxe: Funcoes::Pi, quanto pela sintaxe: parent::Pi.
Lembre-se que parent se refere a classe-pai. E Pi é da classe-pai de Aplicação. Self refere-se a classe em questão.

Propriedades e métodos estáticos

Podemos considerar que propriedades e métodos estáticos podem ser acessados sem a necessidade de instanciar um objeto. Utilizamos este recurso quando, por exemplo, temos um método que é acessado diversas vezes na mesma aplicação, e queremos economizar algumas linhas de código a fim de não ter que criar um objeto a todo momento. É importante destacar que um método estático não pode fazer referencia a propriedades internas pelo operador $this, pois este operador é usado para referenciar instâncias da classe ou seja, objetos.

Utilizamos a palavra chave static para definir a declaração de membros estáticos.

Vamos ao exemplo:

class Teste{

     public static $propriedade = "Esta é uma propriedade estática";


     public static function MetodoEstatico(){
        echo "Este é um método estático";
     }
}

/* Para acessar é simples, 
* perceba que não é necessário 
* criar o objeto.
*/

echo Teste::$propriedade;
//Agora o método
Teste::MetodoEstatico();

Membros estáticos também podem ser acessados internamente utilizando o operador self (o mesmo que vimos anteriormente), veja:

class Teste{
     public static $propriedade = "www.cafeesoftware.com - Transformando Café em Software";
     public static function RetornaPropriedade(){

       return self::propriedade;   

     }

     public static function UsarMetodoRetorna(){
        return self::RetornaPropriedade();   
     }
}
// Para acessar:
echo Teste::RetornaPropriedade();
Teste::UsarMetodoRetorna();

Quando se tratar de uma subclasse herdando propriedades ou mesmo métodos estáticos, a referência é feita normalmente através da palavra reservada parent, como já vimos anteriormente.
No próximo artigo estudaremos os relacionamentos: Composição, agregação e associação. Veremos na prática quando ocorre cada um deles e sua utilização no PHP.
Utilize o espaço de comentários para dúvidas, sugestões e elogios.

Até a próxima.

Nenhum comentário:

Postar um comentário