Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 15 additions & 10 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
## SOLID Principles Examples in PHP

### Single Responsibility Principle
A class should have one, and only one, reason to change. [Example](./1-single-responsibility-principle.php)
### Single Responsibility Principle ([Example](./1-single-responsibility-principle.php))
This principle is about **actors and high level architecture**.
> A class should have one, and only one, reason to change.

### Open Closed Principle
A class should be open for extension, but closed for modification. [Example](./2-open-closed-principle.php)
### Open Closed Principle ([Example](./2-open-closed-principle.php))
This principle is about **class design and feature extensions**.
> A class should be open for extension, but closed for modification.

### Liskov Substitution Principle
Derived classes must be substitutable for their base classes. [Example](./3-liskov-substitution-principle.php)
### Liskov Substitution Principle ([Example](./3-liskov-substitution-principle.php))
This principle is about **subtyping and inheritance**
> Derived classes must be substitutable for their base classes.

### Interface Segregation Principle
Many client-specific interfaces are better than one general-purpose interface. [Example](./4-interface-segregation-principle.php)
### Interface Segregation Principle ([Example](./4-interface-segregation-principle.php))
This principle is about **business logic to clients communication**.
> Many client-specific interfaces are better than one general-purpose interface.

### Dependency Inversion Principle
Depend upon abstractions. Do not depend upon concretions. [Example](./5-dependency-inversion-principle.php)
### Dependency Inversion Principle ([Example](./5-dependency-inversion-principle.php))
> This principle wires up all **other four principles in a single circle**.
Depend upon abstractions. Do not depend upon concretions.

#### For more information about *Object Oriented Design Principles*, you can refer [this slide](https://viblo.asia/thangtd90/posts/pVYRPJPmG4ng)