A Programação orientada a objetos permite que os desenvolvedores agrupem tarefas semelhantes em classes. O PHP não é uma linguagem que foi criada para ser orientada a objetos. Começando a dar suporte ao mesmo na versão 3, sendo melhorada na versão 4 e tendo um bom suporte na versão 5.3.
O primeiro e mais importante conceito de orientação a objetos é a classe, uma abstração do software de objetos similares, ou seja, um template do qual os objetos serão criados.
Na criação de uma classe, o nome é precedido da palavra reservada class
e seguida de um par de chaves {}
:
1 |
|
Atributos/Propriedades
São elementos que definem uma classe, também são conhecidos como variáveis de classe. A palavra chave public
determina a visibilidade da propriedade (vamos ver mais sobre isso no decorrer do artigo, na parte de visibilidade de propriedades e métodos). Depois disso, a propriedade é nomeada usando os padrões básicos de nomeação de variáves e é mostrado que não necessitam de valores iniciais.
1 |
|
Métodos
São funções internas das classes que realizam algo, geralmente tomando por base os dados armazenados nas propriedades. Dentro dos métodos, as propriedades e outros métodos internos da classe são referenciados utilizando $this
.
Construtor
O construtor da classe é um bloco declarado com o mesmo nome que a classe.
1 |
|
Após criar a classe, ela pode ser instanciada e guardada em alguma variável usando a palavra chave new
. O operador ->
, permite acessar as propriedades e métodos de um objeto.
1 |
|
Métodos Mágicos
Ao invés de termos um método com o mesmo nome da classe para ser o construtor, o PHP provê o método __construct()
, que é chamado automaticamente quando a classe é instanciada. Também há inúmeras constantes mágicas, como __CLASS__
, que retorna o nome da classe. Podemos ver as constantes disponíveis no Manual do PHP. Os demais métodos mágicos podemos conferir no Manual.
1 |
|
Herança de Classe
Na Orientação a objetos, as classes podem herdar métodos e propriedades de outra classe. Isso é possível utilizando a palavra chave extends
.
1 |
|
Assim, temos superclasses e subclasses na orientação a objetos. Onde as superclasses são classes mãe, que não derivam de nenhuma outra classe e as subclasses são classes que são criadas a partir de outras classes. Podemos utilizar as palavras parent (se referindo a classe mãe) e self (se referindo a classe atual).
1 |
|
Temos que ficar atentos, que quando há uma propriedade de mesmo nome na subclasse, a propriedade da superclasse será sobrescrita e o valor da subclasse passará a valer.
Visbilidade de Propriedades e Métodos
A visibilidade controla como e de onde as propriedades e métodos podem ser acessados. Há três palavras chaves para visibilidade: public
, protected
, e private
. Também pode ser adicionado à sua visibilidade, a palavra chave static
, o que permite que sejam acessados sem uma instanciação da classe. Se a visibilidade não é declarada, automaticamente se considera como public
. O uso da declaração de variável com a palavra-chave var
ainda é suportada por razões de compatibilidade e o mesmo é um sinônimo para a palavra-chave public
.
- public - Podem ser acessados de qualquer lugar, tanto dentro quanto fora da classe.
- protected - Só pode ser acessado dentro da própria classe ou por uma classe herdeira.
- private - É acessível somente dentro da classe que os define.
- static - Podem ser acessados sem instanciar a classe.
1 |
|
Agora um exemplo com a adição da palavra chave static
:
1 |
|
Propriedades estáticas não podem ser acessadas através do operador ->.
Conclusão
Programação orientada a objetos é uma coisa linda. Pode parecer complicado no começo, mas como tudo, a prática e entender o que está fazendo, leva a perfeição. É só cair dentro dos estudos e ver as vantagens, que serão notadas. Facilidade na manutenção e organização, ajudando você e sua equipe.