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

Aplicando SOLID com PHP7

Jan 23, 2018

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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◎