Aplicando SOLID com PHP7
-
Upload
daniel-archer-marques-cramer -
Category
Technology
-
view
622 -
download
0
Transcript of Aplicando SOLID com PHP7
![Page 1: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/1.jpg)
AplicandoS.O.L.I.D.
comPHP7
![Page 2: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/2.jpg)
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
![Page 3: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/3.jpg)
???Como é o seu ambiente de trabalho?
![Page 4: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/4.jpg)
Assim...
![Page 5: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/5.jpg)
Ou Assim…...?
![Page 6: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/6.jpg)
???O Que é SOLID?Em poucas palavras
![Page 7: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/7.jpg)
“Princípios para criar sistemas de fácil manutenção e extensíveis
ao longo do tempo.
![Page 8: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/8.jpg)
Benefícios
CompreensãoMais fácil de entender o
funcionamento do sistema
![Page 9: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/9.jpg)
Benefícios
Fácil ManutençãoClasses definidas e com scopo
pequeno
![Page 10: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/10.jpg)
Benefícios
ReusoPoucas responsabilidades, facilitam o
reaproveitamento
![Page 11: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/11.jpg)
Benefícios
ExtensívelPouca dependência, facilita e criação
de novas classes.
![Page 12: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/12.jpg)
O que significaS.O.L.I.D ?
![Page 13: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/13.jpg)
O que significa?
◎ Single Responsability
A classe deve ter apenas um motivo para ser alterada.
![Page 14: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/14.jpg)
O que significa?
◎ Single Responsability
◎ Open / Close Principle
Aberta para extensão, fechada para alteração.
![Page 15: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/15.jpg)
O que significa?
◎ Single Responsability
◎ Open / Close Principle
◎ Liskov Subtitution
A SubClasse deve ser substituível por sua classe Base.
![Page 16: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/16.jpg)
O que significa?
◎ Single Responsability
◎ Open / Close Principle
◎ Liskov Subtitution
◎ Interface Segregation
Interfaces específicas para problemas específicos.
![Page 17: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/17.jpg)
O que significa?
◎ Single Responsability
◎ Open / Close Principle
◎ Liskov Subtitution
◎ Interface Segregation
◎ Dependency InversionDesign é gerenciar Dependências!
![Page 18: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/18.jpg)
O que significa?
◎ Dependency Inversion
Se voçe utiliza alguma coisa,Você é dependente dela.
Se algo que você é dependente muda, Voçe precisa mudar.
![Page 19: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/19.jpg)
Um mundo melhor...
![Page 20: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/20.jpg)
… ou não!
![Page 21: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/21.jpg)
Over EngineeringNão antecipe problemas que você não tem
![Page 22: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/22.jpg)
![Page 23: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/23.jpg)
![Page 24: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/24.jpg)
PHP7PHP como nunca se viu antes!
![Page 25: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/25.jpg)
Scalar Type HintsInt, Float, String, Bool+declare(strict_types = 1);
![Page 26: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/26.jpg)
Place your screenshot here
Lets CodeAprendemos código, fazendo código.
![Page 27: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/27.jpg)
![Page 28: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/28.jpg)
![Page 29: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/29.jpg)
![Page 30: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/30.jpg)
![Page 31: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/31.jpg)
![Page 32: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/32.jpg)
![Page 33: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/33.jpg)
![Page 34: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/34.jpg)
+Robusto-Código-Responsabilidades
![Page 35: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/35.jpg)
Próximo PassoExercitar...
![Page 36: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/36.jpg)
Calisthenics
“Exercícios”
Créditos: Frank Medrano, Atleta Vegano
![Page 37: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/37.jpg)
Fisiculturismo ===
Proteina Animal
![Page 38: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/38.jpg)
Fisiculturismo ===
Proteina Animal
![Page 39: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/39.jpg)
PHP ===
WordPress
![Page 40: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/40.jpg)
PHP !==
WordPressNós podemos escrever um código
bom!
![Page 41: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/41.jpg)
Continuando… Calisthenics
◎ 1# Uma identação por método
![Page 42: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/42.jpg)
Continuando… Calisthenics
◎ 1# Uma identação por método
◎ 2# Não use Else
![Page 43: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/43.jpg)
Continuando… Calisthenics
◎ 1# Uma identação por método
◎ 2# Não use Else
◎ 3# Encapsular tipos Primitivos
![Page 44: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/44.jpg)
Continuando… Calisthenics
◎ 1# Uma identação por método
◎ 2# Não use Else
◎ 3# Encapsular tipos Primitivos
◎ 4# Apenas uma -> por linha
![Page 45: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/45.jpg)
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
![Page 46: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/46.jpg)
◎ 6# Classes Pequenas
Continuando… Calisthenics
![Page 47: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/47.jpg)
◎ 6# Classes Pequenas
◎ 7# Limite atributos
Continuando… Calisthenics
![Page 48: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/48.jpg)
◎ 6# Classes Pequenas
◎ 7# Limite atributos
◎ 8# Use Coleções
Continuando… Calisthenics
![Page 49: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/49.jpg)
◎ 6# Classes Pequenas
◎ 7# Limite atributos
◎ 8# Use Coleções
◎ 9# Getters and Setters
Continuando… Calisthenics
![Page 50: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/50.jpg)
◎ 6# Classes Pequenas
◎ 7# Limite atributos
◎ 8# Use Coleções
◎ 9# Getters and Setters
◎ 10# Documente!
Continuando… Calisthenics
![Page 51: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/51.jpg)
PHP7
SOLID
Calisthenics
![Page 52: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/52.jpg)
PHP7
SOLID
Calisthenics
![Page 53: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/53.jpg)
![Page 54: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/54.jpg)
![Page 55: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/55.jpg)
Single Resp.
![Page 56: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/56.jpg)
![Page 57: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/57.jpg)
PHP7
![Page 58: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/58.jpg)
![Page 59: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/59.jpg)
Calisth.Early
Return
![Page 60: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/60.jpg)
![Page 61: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/61.jpg)
Collections
![Page 62: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/62.jpg)
![Page 63: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/63.jpg)
![Page 64: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/64.jpg)
![Page 65: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/65.jpg)
Obrigado!Perguntas?
◎ [email protected]◎ facebook.com/danielmarquescramer◎ github.com/danielcramer◎ www.php-rs.org
![Page 66: Aplicando SOLID com PHP7](https://reader033.fdocuments.net/reader033/viewer/2022042515/587eec361a28ab17388b6f8f/html5/thumbnails/66.jpg)
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◎
◎