Php

Design Patterns no PHP – Parte I : Introdução Geral

Esse é o primeiro estudo de Design Patterns relacionado a PHP aqui no blog – e espero que seja o antecessor de muitos outros.

Background Image

Esse é o primeiro estudo de Design Patterns relacionado a PHP que publicarei no blog – e espero que seja o antecessor de muitos outros.

Certamente, por o PHP ser uma linguagem extremamente fácil, tanto pela sintaxe, quanto pela comunidade de programadores, cada desenvolvedor PHP acaba tendo uma “escola” diferente.

De fato isso é bom pois cada um aprende de acordo com o seu próprio ritmo de estudos. Mas, vejo muita muita gente dizendo-se programador com deficiências em áreas básicas da programação. Falando de maneira simples, a galera tá mais preocupada em fazer um site do que construir uma solução.

Pensando nisso, resolvi começar falando a respeito de Padrões de Projetos ou Padrões de Desenho de Software, termos estes originários do inglês Designe Patterns. Ao longo desse estudo, vamos abordar os principais pontos de desenvolvimento de software estruturado.

PHP e a Orientação a Objetos

dominoes
Photo by Miguel Á. Padriñán on Pexels.com

Primeiramente, existe um ponto que necessita ser ressaltado: o PHP não obriga o programador a desenvolver pensando nos moldes da Orientação a Objetos (OO).

Não caindo no mérito desta característica do PHP ser boa ou ruim, é importante o programador ver-se motivado a querer aprender esse padrão e utilizá-lo sempre em seus projetos. Aliás, como tem sempre aquele pessoal que aprendeu programar de uma forma, e fica meio resguardado para migrar para uma outra forma de pensar, gosto sempre de dizer que existem soluções e soluções.

Como li em algum lugar certa vez “Qualquer chimpanzé consegue escrever um código que o computador entenda, o dificil é escrever um código que o homem também possa entender”. Esse é o espirito da coisa.

Qual são os princípios da Orientação a Objetos ?

assorted puzzle game
Photo by Magda Ehlers on Pexels.com

Para podermos aprendermos os Design Patterns, devemos impreterivelmente entendermos como funciona um código Orientado a Objetos. Um código OO deve seguir os seguintes conceitos :

Encapsulamento :

Todo código que segue os moldes da OO, deve encapsular, ou seja, dividir em pequenas partes um problema/solução bem definido. Cada parte ou capsula, deve ser independente e bem formulada, de maneira a ficar claro onde ela se aplica no seu projeto.

Generalidade:

Todo código orientado a objetos deve ser construído pensando sempre em ser reaproveitado em outros projetos.

Equilíbrio:

Quando escolhemos seguir um padrão em um projeto, devemos sempre usarmos o esquilíbrio em até onde vamos padronizar nossos códigos. Devemos sempre analizar qual tipo de problema teremos que resolver, vermos como funcionam as soluções tradicionais e como funcionam as soluções ruins ou fracassadas. Com isso, conseguimos facilmente entender como se comportará o nosso código.

Abstração:

Para desenvolvermos um código elegante, devemos usar abstrações, ou seja, analisarmos os conceitos do conhecimento cotidiano na nossa vida real e aplicarmos ao nosso código. Parece loucura, mas realmente é assim que funciona.

Abertura:

Ao adotarmos o padrão OO em nosso código, ele deve ser flexível para que cada capsula tenha liberdade de se aprofundar tanto quanto for necessário em um problema.

Combinatoriedade:

A capsulas em seu código deve ser relacionadas hierarquicamente. Isso significa que você deve ter partes maiores em seu código, que se relacionam com diversas outras partes menores.

Entretanto, é bom lembrar que não é necessário você ficar decorando esses conceitos. Basta entendê-los e fazer alguns poucos exercícios tentando combinar os itens acima. Em pouco tempo, esses conceitos serão notados naturalmente em seus códigos.

Conclusão

O PHP pode não ser considerada a linguagem-modelo ao falarmos de OO (tal como Java), mas através da versão 5 do nosso tão amado HyperText Preprocessor conseguimos utilizar praticamente todos os padrões mais comuns do Designer Patterns.

Boiou? Fique atento nos “próximos capítulos” deste estudo que você poderá entender melhor. No próximo estudo falarei sobre o Modelo de Classes, explanando sobre Classes bem como Instâncias, Objetos, Métodos, Propriedades, Herança entre outras coisas e, vou montar um exemplo básico em PHP.

Por fim, caso queira algum material sobre o tempo, deixo de recomendação o livro clássico Padrões de Projetos: Soluções Reutilizáveis de Software Orientados a Objetos.