Aplicando
S.O.L.I.D.
com
PHP7
Archer!
Daniel Archer
● Programador PHP na KingHost
● Zend Certified Engineer 5.3
● Organizador PHPRS
● Trabalho com PHP há 6 anos
● Palestrante
○ PHP Conference Brasil
○ TDC Porto Alegre
○ Faculdade Senac
???
Como é o seu
ambiente de
trabalho?
Assim...
Ou Assim…...?
???
O Que é SOLID?
Em poucas palavras
“
Princípios para criar sistemas de
fácil manutenção e extensíveis
ao longo do tempo.
Benefícios
Compreensão
Mais fácil de entender o
funcionamento do sistema
Benefícios
Fácil Manutenção
Classes definidas e com scopo
pequeno
Benefícios
Reuso
Poucas responsabilidades, facilitam o
reaproveitamento
Benefícios
Extensível
Pouca dependência, facilita e criação
de novas classes.
O que significa
S.O.L.I.D ?
O que significa?
◎ Single Responsability
A classe deve ter apenas um motivo para ser
alterada.
O que significa?
◎ Single Responsability
◎ Open / Close Principle
Aberta para extensão, fechada para alteração.
O que significa?
◎ Single Responsability
◎ Open / Close Principle
◎ Liskov Subtitution
A SubClasse deve ser substituível por sua classe
Base.
O que significa?
◎ Single Responsability
◎ Open / Close Principle
◎ Liskov Subtitution
◎ Interface Segregation
Interfaces específicas
para problemas específicos.
O que significa?
◎ Single Responsability
◎ Open / Close Principle
◎ Liskov Subtitution
◎ Interface Segregation
◎ Dependency Inversion
Design é gerenciar Dependências!
O que significa?
◎ Dependency Inversion
Se voçe utiliza alguma coisa,
Você é dependente dela.
Se algo que você é dependente muda,
Voçe precisa mudar.
Um mundo melhor...
… ou não!
Over Engineering
Não antecipe problemas que você não tem
PHP7
PHP como nunca se viu antes!
Scalar Type Hints
Int, Float, String, Bool
+
declare(strict_types = 1);
Place your screenshot here
Lets Code
Aprendemos código, fazendo código.
+Robusto
-Código
-Responsabilidades
Próximo Passo
Exercitar...
Calisthenics
“Exercícios”
Créditos: Frank Medrano, Atleta Vegano
Fisiculturismo
===
Proteina Animal
Fisiculturismo
===
Proteina Animal
PHP
===
WordPress
PHP
!==
WordPress
Nós podemos escrever um código
bom!
Continuando… Calisthenics
◎ 1#Uma identação por método
Continuando… Calisthenics
◎ 1#Uma identação por método
◎ 2#Não use Else
Continuando… Calisthenics
◎ 1#Uma identação por método
◎ 2#Não use Else
◎ 3#Encapsular tipos Primitivos
Continuando… Calisthenics
◎ 1#Uma identação por método
◎ 2#Não use Else
◎ 3#Encapsular tipos Primitivos
◎ 4#Apenas uma -> por linha
Continuando… Calisthenics
◎ 1#Uma identação por método
◎ 2#Não use Else
◎ 3#Encapsular tipos Primitivos
◎ 4#Apenas uma -> por linha
◎ 5#Não Abrevie
◎ 6#Classes Pequenas
Continuando… Calisthenics
◎ 6#Classes Pequenas
◎ 7#Limite atributos
Continuando… Calisthenics
◎ 6#Classes Pequenas
◎ 7#Limite atributos
◎ 8#Use Coleções
Continuando… Calisthenics
◎ 6#Classes Pequenas
◎ 7#Limite atributos
◎ 8#Use Coleções
◎ 9#Getters and Setters
Continuando… Calisthenics
◎ 6#Classes Pequenas
◎ 7#Limite atributos
◎ 8#Use Coleções
◎ 9#Getters and Setters
◎ 10#Documente!
Continuando… Calisthenics
PHP7
SOLID
Calisthenics
PHP7
SOLID
Calisthenics
Single
Resp.
PHP7
Calisth.
Early
Return
Collections
Obrigado!
Perguntas?
◎ contato@danielcramer.com.br
◎ facebook.com/danielmarquescramer
◎ github.com/danielcramer
◎ www.php-rs.org
Resources
Obrigado especial a todos que contribuíram com essa
palestra:
◎ https://wiki.php.net/rfc/scalar_type_hints
◎ http://fr.slideshare.net/darkmira/scalar-types-hints
◎ http://pt.slideshare.net/rdohms/writing-code-that-lasts-or-writing-
code-you-wont-hate-tomorrow-57656162
◎ http://confreaks.tv/videos/goruco2009-solid-object-oriented-design
◎ http://pt.slideshare.net/petrabarus/whats-new-in-php7
◎ http://pt.slideshare.net/guilhermeblanco/php-para-adultos-clean-code-
e-object-calisthenics
◎
◎

Aplicando SOLID com PHP7