Uma classe é um modelo usado para criar objetos. Para definir uma classe é usado a palavra-chave “class” seguido de um nome e de um bloco de código. A convenção de nomenclatura para classes é maiúsculas e minúsculas, o que significa que cada palavra deve ser a primeira letra maiúscula.

<?php
    class MyRectangle{}
?>

O corpo da classe pode conter propriedades e métodos. As propriedades são variáveis ​​que possuem o estado do objeto, enquanto os métodos são funções que definem o que o objeto pode fazer. Propriedades também são conhecidos como campos ou atributos. No PHP, eles devem ter um nível de acesso explícita especificado. O nível de acesso público é utilizado abaixo, que dá acesso irrestrito ao referido imóvel.

<?php
    class MyRectangle{  
       public $x, $y;
       function newArea($a, $b){
       return $a * $b;
       }
    }
?>

Para acessar membros de dentro da classe a pseudo variável $this é utilizado juntamente com o operador seta simples ( ->). A variável $this é uma referência para a instância atual da classe e só pode ser usado dentro de um contexto de objeto. Sem ele e $x e $y seria apenas visto como variáveis ​​locais.

<?php
class MyRectangle{
    public $x, $y;
    function newArea($a, $b){ 
        return $a * $b;
    }
    function getArea(){
        return $this->newArea($this->x, $this->y);
    }
}
?>

Instanciar um objeto

Para usar os membros de uma classe fora da classe delimitador, um objeto da classe deve primeiro ser criado. Isso é feito usando a palavra-chave “new”, que irá criar um novo objeto ou instância.

<?php
    $r = new MyRectangle(); // Objeto instanciado
?>

O objeto irá conter o seu próprio conjunto de propriedades, que pode conter valores que são diferentes aos de outras instâncias da classe. Tal como acontece com as funções, objetos de uma classe podem ser criados mesmo se a definição de classe aparece mais abaixo no arquivo de script.

<?php
    $r = new MyDummy(); // ok
    class MyDummy{}; 
?>

Acessando membros do objeto

Para acessar os membros que pertencem a um objeto é necessário o operador seta simples (->). Isso pode ser usado para chamar métodos ou para atribuir valores às propriedades.

<?php
   $r->getArea(10, 2); // 20
   $r->x = 5; $r->y = 10;
?>

Valores inicial de propriedade

Se uma propriedade precisa ter um valor inicial de forma limpa deve-se atribuir a propriedade o valor ao mesmo tempo em que é declarada. Este valor inicial, então, deve ser definido quando o objeto é criado. Atribuições deste tipo deve ser uma expressão constante e não pode, por exemplo, ser uma variável ou uma expressão matemática.

<?php
class MyRectangle{
    public $x = 5, $y = 10;
}
?>

Construtor

Uma classe pode ter um construtor, que é um método especial usado para inicializar (construir) o objeto. Este método fornece uma maneira de inicializar as propriedades que não se limita apenas às expressões constantes. Em PHP, o construtor começa com dois sublinhados seguidos da palavra “construct”.

<?php
class MyRectangle{
    public $x, $y;
    function __construct(){
        $this->x = 5;
        $this->y = 10; 
        echo "Constructed";
    }
}
?>

Quando uma nova instância dessa classe é criado o construtor será chamado, que neste exemplo define as propriedades para os valores especificados. Note que os valores de propriedade inicial será definido antes do construtor é executado.

<?php
    $r = new MyRectangle(); // "Constructed"
?>

Como esse construtor não tem argumentos os parênteses podem, opcionalmente, ser deixado de fora.

<?php
    $r = new MyRectangle; // "Constructed"
?>

Assim como qualquer outro método, o construtor pode ter uma lista de parâmetros. Isto pode ser utilizado para tornar os valores iniciais das propriedades dependentes dos parâmetros passados ​​quando o objecto é criado.

<?php
class MyRectangle{
public $x, $y;
    function __construct($x, $y){
       $this->x = $x; 
       $this->y = $y; 
    } 
}
$r = new MyRectangle(5,10);
?>

Destrutor

As classes podem ter também um destruidor. Este método especial começa com dois sublinhados seguidos da palavra “destruct”. Ele será chamado assim que não houver mais referências para o objeto, o objeto é destruído pelo coletor de lixo PHP.

<?php
class MyRectangle{
// ...
   function __destruct(){ 
      echo "Destructed"; 
   }
} 
?>

Para testar o processo de destruição pode ser usado a função unset para remover manualmente todas as referências ao objeto.

<?php
    unset($r); // "Destructed"
?>

Tenha em mente que o modelo de objeto foi totalmente reescrito em PHP 5. Por isso, muitas características de classes, como destruidores, não funcionará em versões anteriores da linguagem.

Case Sensitive

Considerando os nomes das variáveis ​​são case-sensitive, nomes de classes em PHP são case-insensitive – assim como nomes de funções, palavras-chave e construções internas, tais como echo. Isto significa que uma classe chamada “MyClass” também pode ser referida como “myclass” ou “MyCLass”.

<?php
   class MyClass {}
   $o1 = new myclass(); // ok
   $o2 = new MYCLASS(); // ok
?>

Comparação de objetos

Ao usar o operador de igual (==) em objetos esses objetos são considerados iguais se os objetos são instâncias da mesma classe e as suas propriedades têm os mesmos valores e tipos. Em contrapartida, o operador idêntico (===) retorna verdadeiro somente se as variáveis ​​se referem à mesma instância da mesma classe.

<?php
class Flag {
   public $flag = true;
}
   $a = new Flag();
   $b = new Flag();
   $c = ($a == $b); // true (mesmos valores)
   $d = ($a === $b); // false (valores diferentes)
?>

Links Importantes

PHP.net http://php.net/manual/pt_BR/language.oop5.basic.php

Dúvidas ou Questionamentos, Comente!

Classes – Guia de Referência Básico do PHP

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.