Top Banner
Five agile principles that should guide you every time you write code by Talevski Igor
37
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: Laravel 5 and SOLID

Five agile principles that should guide you every time you write code

by Talevski Igor

Page 2: Laravel 5 and SOLID

Talevski Igor

Page 3: Laravel 5 and SOLID

L 5 : N E W T H I N G S - Q U I C K R E V I E W

STRU

CTU

RE

Default namespace: Appapp/models=> nullapp/start => nullNEW => app/Providers

Controllers => app/HttpMiddleware => app/HttpRequests => app/Http

Route filters=> middleware

language files => resources directoryviews => resources directory

Page 4: Laravel 5 and SOLID

L 5 : N E W T H I N G S - Q U I C K R E V I E W

Contracts: illuminate/contractsController Method InjectionEvent ObjectsCommands / Queueing

Route Middleware (Filters)

Form Requests / Controller Request Validation

Route CacheDatabase QueueLaravel Scheduler

Elixir

SocialiteFilesystem abstraction: Flysystem

DotEnvAuthentication ScaffoldingConfiguration CacheNew Generators

TinkerSymfony VarDumper

Page 5: Laravel 5 and SOLID

L 5 : N E W T H I N G S - Q U I C K R E V I E W

NO

MO

RE…

Page 6: Laravel 5 and SOLID

S O L I DSINGLE RESPONSIBILITY PRINCIPLE

OPEN/CLOSED PRINCIPLE

LISKOV SUBSTITUTION PRINCIPLE

INTERFACE SEGREGATION PRINCIPLE

DEPENDENCY INVERSION PRINCIPLE

Page 7: Laravel 5 and SOLID

SINGLE RESPONSIBILITY PRINCIPLE

A class should have only one reason to

change.

Page 8: Laravel 5 and SOLID

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

Page 9: Laravel 5 and SOLID

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

Page 10: Laravel 5 and SOLID

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

Page 11: Laravel 5 and SOLID

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

Page 12: Laravel 5 and SOLID

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

Page 13: Laravel 5 and SOLID

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

Page 14: Laravel 5 and SOLID

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

Page 15: Laravel 5 and SOLID

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

Page 16: Laravel 5 and SOLID

SIN

GLE R

ESPO

NSIB

ILIT

Y P

RIN

CIP

LE

Page 17: Laravel 5 and SOLID

S O L I DSINGLE RESPONSIBILITY PRINCIPLE

OPEN/CLOSED PRINCIPLE

LISKOV SUBSTITUTION PRINCIPLE

INTERFACE SEGREGATION PRINCIPLE

DEPENDENCY INVERSION PRINCIPLE

Page 18: Laravel 5 and SOLID

Software entities (classes, modules, functions,

etc.) should be open for extension,

but closed for modification.

OPEN/CLOSED PRINCIPLE

Page 19: Laravel 5 and SOLID

Separate extensible behavior behind an interface, and flip the dependencies

OPEN

/C

LO

SED

PRIN

CIP

LE

Page 20: Laravel 5 and SOLID

S O L I DSINGLE RESPONSIBILITY PRINCIPLE

OPEN/CLOSED PRINCIPLE

LISKOV SUBSTITUTION PRINCIPLE

INTERFACE SEGREGATION PRINCIPLE

DEPENDENCY INVERSION PRINCIPLE

Page 21: Laravel 5 and SOLID

Let q(x) be a property provable about objects x of type T.

Then q(y) should be provable for objects y of type S

where S is a subtype of T.

LISKOV SUBSTITUTION PRINCIPLE

Page 22: Laravel 5 and SOLID

LIS

KO

VSU

BSTIT

UTIO

N P

RIN

CIP

LE

Page 23: Laravel 5 and SOLID

LIS

KO

VSU

BST

ITU

TIO

N P

RIN

CIP

LE

Page 24: Laravel 5 and SOLID

LIS

KO

VSU

BST

ITU

TIO

N P

RIN

CIP

LE

Page 25: Laravel 5 and SOLID

S O L I DSINGLE RESPONSIBILITY PRINCIPLE

OPEN/CLOSED PRINCIPLE

LISKOV SUBSTITUTION PRINCIPLE

INTERFACE SEGREGATION PRINCIPLE

DEPENDENCY INVERSION PRINCIPLE

Page 26: Laravel 5 and SOLID

A client should never be forced to

implement an interface that it

doesn’t use

INTERFACE SEGREGATION PRINCIPLE

Page 27: Laravel 5 and SOLID

INTERFA

CE S

EG

REG

ATIO

N P

RIN

CIP

LE

Page 28: Laravel 5 and SOLID

INTERFA

CE S

EG

REG

ATIO

N P

RIN

CIP

LE

Page 29: Laravel 5 and SOLID

INTERFA

CE S

EG

REG

ATIO

N P

RIN

CIP

LE

Page 30: Laravel 5 and SOLID

S O L I DSINGLE RESPONSIBILITY PRINCIPLE

OPEN/CLOSED PRINCIPLE

LISKOV SUBSTITUTION PRINCIPLE

INTERFACE SEGREGATION PRINCIPLE

DEPENDENCY INVERSION PRINCIPLE

Page 31: Laravel 5 and SOLID

A. High-level modules should not depend on low-level modules. Both should depend

on abstractions.

B. Abstractions should not depend upon details. Details should depend upon

abstractions.

DEPEN

DEN

CY IN

VERSIO

N P

RIN

CIP

LE

Dependency inversion principle

Page 32: Laravel 5 and SOLID

DEPEN

DEN

CY IN

VERSIO

N P

RIN

CIP

LE

Page 33: Laravel 5 and SOLID

DEPEN

DEN

CY IN

VERSIO

N P

RIN

CIP

LE

Page 34: Laravel 5 and SOLID

S O L I DSINGLE RESPONSIBILITY PRINCIPLE

OPEN/CLOSED PRINCIPLE

LISKOV SUBSTITUTION PRINCIPLE

INTERFACE SEGREGATION PRINCIPLE

DEPENDENCY INVERSION PRINCIPLE

Page 35: Laravel 5 and SOLID
Page 36: Laravel 5 and SOLID

Page 37: Laravel 5 and SOLID