Aplicando SOLID com PHP7

66
Aplicando S.O.L.I.D. com PHP7

Transcript of Aplicando SOLID com PHP7

Page 1: Aplicando SOLID com PHP7

AplicandoS.O.L.I.D.

comPHP7

Page 2: Aplicando SOLID 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

Page 3: Aplicando SOLID com PHP7

???Como é o seu ambiente de trabalho?

Page 4: Aplicando SOLID com PHP7

Assim...

Page 5: Aplicando SOLID com PHP7

Ou Assim…...?

Page 6: Aplicando SOLID com PHP7

???O Que é SOLID?Em poucas palavras

Page 7: Aplicando SOLID com PHP7

“Princípios para criar sistemas de fácil manutenção e extensíveis

ao longo do tempo.

Page 8: Aplicando SOLID com PHP7

Benefícios

CompreensãoMais fácil de entender o

funcionamento do sistema

Page 9: Aplicando SOLID com PHP7

Benefícios

Fácil ManutençãoClasses definidas e com scopo

pequeno

Page 10: Aplicando SOLID com PHP7

Benefícios

ReusoPoucas responsabilidades, facilitam o

reaproveitamento

Page 11: Aplicando SOLID com PHP7

Benefícios

ExtensívelPouca dependência, facilita e criação

de novas classes.

Page 12: Aplicando SOLID com PHP7

O que significaS.O.L.I.D ?

Page 13: Aplicando SOLID com PHP7

O que significa?

◎ Single Responsability

A classe deve ter apenas um motivo para ser alterada.

Page 14: Aplicando SOLID com PHP7

O que significa?

◎ Single Responsability

◎ Open / Close Principle

Aberta para extensão, fechada para alteração.

Page 15: Aplicando SOLID com PHP7

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

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

O que significa?

◎ Single Responsability

◎ Open / Close Principle

◎ Liskov Subtitution

◎ Interface Segregation

◎ Dependency InversionDesign é gerenciar Dependências!

Page 18: Aplicando SOLID com PHP7

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

Um mundo melhor...

Page 20: Aplicando SOLID com PHP7

… ou não!

Page 21: Aplicando SOLID com PHP7

Over EngineeringNão antecipe problemas que você não tem

Page 22: Aplicando SOLID com PHP7
Page 23: Aplicando SOLID com PHP7
Page 24: Aplicando SOLID com PHP7

PHP7PHP como nunca se viu antes!

Page 25: Aplicando SOLID com PHP7

Scalar Type HintsInt, Float, String, Bool+declare(strict_types = 1);

Page 26: Aplicando SOLID com PHP7

Place your screenshot here

Lets CodeAprendemos código, fazendo código.

Page 27: Aplicando SOLID com PHP7
Page 28: Aplicando SOLID com PHP7
Page 29: Aplicando SOLID com PHP7
Page 30: Aplicando SOLID com PHP7
Page 31: Aplicando SOLID com PHP7
Page 32: Aplicando SOLID com PHP7
Page 33: Aplicando SOLID com PHP7
Page 34: Aplicando SOLID com PHP7

+Robusto-Código-Responsabilidades

Page 35: Aplicando SOLID com PHP7

Próximo PassoExercitar...

Page 36: Aplicando SOLID com PHP7

Calisthenics

“Exercícios”

Créditos: Frank Medrano, Atleta Vegano

Page 37: Aplicando SOLID com PHP7

Fisiculturismo ===

Proteina Animal

Page 38: Aplicando SOLID com PHP7

Fisiculturismo ===

Proteina Animal

Page 39: Aplicando SOLID com PHP7

PHP ===

WordPress

Page 40: Aplicando SOLID com PHP7

PHP !==

WordPressNós podemos escrever um código

bom!

Page 41: Aplicando SOLID com PHP7

Continuando… Calisthenics

◎ 1# Uma identação por método

Page 42: Aplicando SOLID com PHP7

Continuando… Calisthenics

◎ 1# Uma identação por método

◎ 2# Não use Else

Page 43: Aplicando SOLID com PHP7

Continuando… Calisthenics

◎ 1# Uma identação por método

◎ 2# Não use Else

◎ 3# Encapsular tipos Primitivos

Page 44: Aplicando SOLID com PHP7

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

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

◎ 6# Classes Pequenas

Continuando… Calisthenics

Page 47: Aplicando SOLID com PHP7

◎ 6# Classes Pequenas

◎ 7# Limite atributos

Continuando… Calisthenics

Page 48: Aplicando SOLID com PHP7

◎ 6# Classes Pequenas

◎ 7# Limite atributos

◎ 8# Use Coleções

Continuando… Calisthenics

Page 49: Aplicando SOLID com PHP7

◎ 6# Classes Pequenas

◎ 7# Limite atributos

◎ 8# Use Coleções

◎ 9# Getters and Setters

Continuando… Calisthenics

Page 50: Aplicando SOLID com PHP7

◎ 6# Classes Pequenas

◎ 7# Limite atributos

◎ 8# Use Coleções

◎ 9# Getters and Setters

◎ 10# Documente!

Continuando… Calisthenics

Page 51: Aplicando SOLID com PHP7

PHP7

SOLID

Calisthenics

Page 52: Aplicando SOLID com PHP7

PHP7

SOLID

Calisthenics

Page 53: Aplicando SOLID com PHP7
Page 54: Aplicando SOLID com PHP7
Page 55: Aplicando SOLID com PHP7

Single Resp.

Page 56: Aplicando SOLID com PHP7
Page 57: Aplicando SOLID com PHP7

PHP7

Page 58: Aplicando SOLID com PHP7
Page 59: Aplicando SOLID com PHP7

Calisth.Early

Return

Page 60: Aplicando SOLID com PHP7
Page 61: Aplicando SOLID com PHP7

Collections

Page 62: Aplicando SOLID com PHP7
Page 63: Aplicando SOLID com PHP7
Page 64: Aplicando SOLID com PHP7
Page 65: Aplicando SOLID com PHP7

Obrigado!Perguntas?

[email protected]◎ facebook.com/danielmarquescramer◎ github.com/danielcramer◎ www.php-rs.org

Page 66: Aplicando SOLID com PHP7

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◎