Muitas pessoas começam a desenvolver em PHP, eu diria, da forma errada, remetendo aos tempos que que utilizávamos PHP3, ou até mesmo PHP4 que não oferecia um completo suporte a programação orientada a objetos. Porém é evidente que hoje com o PHP5 não programar utilizando orientação a objetos chega a ser ridículo e inviável para softwares de pequeno, médio ou grande porte.

Desta forma vamos estudar, neste artigo, um pouco sobre PHP e Design Patterns, suas vantagens e principais técnicas.

O que é Design Patterns?

Design Patterns ou Padrões de Projeto de Softwares, descreve soluções para desenvolvimento Orientado a Objetos. Os quais visam facilitar o desenvolvimento e manutenção do software, oferecendo soluções para problemas recorrentes, além de afetar positivamente a reutilização de código, documentação, comunicação, desempenho e visão geral do funcionamento do sistema.

Por que usar Design Patterns?

A maioria dos programadores fazem esta pergunta, então deixem-me perguntar: Porque não utilizar Design Patterns? É evidente que ao seguir padrões de desenvolvimento, você acabará trazendo para seus projetos vários pontos positivos, além de tornar seus softwares mais fáceis de manter, consequentemente reduzindo seu tempo e custo de manutenção.

Seus softwares só tendem a ganhar, não importa o tamanho do projeto, pode ser um pequeno projeto ou um grande projeto, seguir padrões sempre acabarão trazendo vantagens, as principais que posso citar são:

  • Manutenção;
  • Documentação;
  • Melhora a visão geral do sistema;
  • Melhora a leitura e entendimento do código;
  • Facilita o desenvolvimento com equipes grandes;
  • Permite que seus códigos sejam facilmente entendidos por outros, além de você.

E estas são apenas algumas vantagens que podemos citar, que você acabará percebendo já nos primeiros instantes que utilizar padrões de projetos, mas existem muitas outras vantagens a longo prazo que você acabará percebendo conforme sua experiência em desenvolvimento avançar.

Usando Design Patterns com PHP

O PHP5 nos permite uma grande vantagem sobre as versões passadas do PHP, que é a verdadeira possibilidade de desenvolver Orientado a Objetos e consequentemente a possibilidade de seguirmo padrões de desenvolvimento durante a produção de nossos softwares.

Vou mostrar neste artigo alguns exemplos de conceitos que fazem parte dos padrões de projetos, que podem melhorar MUITO o seu código e a maneira que você desenvolve.

Singleton

Quando desenvolvemos alguns projetos, principalmente no modelo MVC, necessitamos que algumas classes, ou a sua maioria seja instanciada apenas uma vez durante a execução do nosso aplicativo. Para isto utilizamos o método Singleton, que permitirá que nossa classe, crie uma instância de si dentro dela mesma (ficou confuso?).

Vamos ver um exemplo prático de como funcionaria uma classe com Singleton. Vejamos o código abaixo:

<?php

class Register {

    private static $_instance;

    private function __construct() {}

    public static function getInstance() {
        if(!self::$_instance instanceof self) {
            self::$_instance = new self;
        }
        return self::$_instance;
    }

}

Note que o exemplo acima não tem realmente uma utilidade, é apenas para demonstrar como funciona o Singleton. Repare que nosso construtor da classe está declarado como private isto faz com que o usuário não possa realmente construí-lo, isto é uma prática recomendada quando utiliza-se singleton. Mas se nós temos nosso construtor “protegido”, como instanciamos nossa classe? Na verdade nós não mais a instanciaremos, e sim a classe criará uma instancia dela mesma dentro de si (ajudem-me a melhorar essa explicação, sim!?) quando chamarmos o método getInstance() e nos retornará esta instância para que possamos armazena-la em uma variável ou não.

Então para chamarmos a nossa classe em nosso código utilizaremos:

<?php

// Suponha que este seja o nome do arquivo da nossa classe acima
require_once("register.class.php");

$register = Register::getInstance();

Na próxima publicação demonstrarei um exemplo prático do uso do padrão Singleton, usando métodos “mágicos” do PHP e também falaremos sobre Factory.

Dúvidas? Deixa um comentário…

Até a próxima…