https://github.com/teodoroleckie/design-patterns
Simple php design pattern. Memento, State, Strategy, Chain of Responsibility & Decorator
https://github.com/teodoroleckie/design-patterns
chain-of-responsibility-pattern decorator-pattern memento-pattern state-pattern strategy-pattern
Last synced: 4 months ago
JSON representation
Simple php design pattern. Memento, State, Strategy, Chain of Responsibility & Decorator
- Host: GitHub
- URL: https://github.com/teodoroleckie/design-patterns
- Owner: teodoroleckie
- License: mit
- Created: 2021-04-10T10:26:52.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2021-05-11T07:19:59.000Z (about 4 years ago)
- Last Synced: 2025-01-03T15:45:41.520Z (6 months ago)
- Topics: chain-of-responsibility-pattern, decorator-pattern, memento-pattern, state-pattern, strategy-pattern
- Language: PHP
- Homepage:
- Size: 61.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
## Design Patterns in PHP
[](https://packagist.org/packages/tleckie/design-patterns)
[](https://scrutinizer-ci.com/g/teodoroleckie/design-patterns/?branch=master)
[](https://scrutinizer-ci.com/g/teodoroleckie/design-patterns/build-status/master)
[](https://packagist.org/packages/tleckie/design-patterns)
[](https://scrutinizer-ci.com/code-intelligence)### Memento:
```php
state()->name(); // 'Name 1'
$originator->changeState(new State('Name 1', 'value 1'));
$historic->save();$originator->changeState(new State('Name 2', 'value 2'));
$originator->state()->name(); // 'Name 2'$historic->undo();
$originator->state()->name(); // 'Name 1'$historic->undo();
$originator->state()->name(); // 'Name 1'```
### State:
```php
isOn(); // falsetry{
$car->turnOff(); // trow Exception
}catch(Exception $exception){
}
$car->turnOn(); // OnState
$car->isOn(); // true
$car->speedUp(); //SpeedUpState
```### Strategy:
```php
execute($terms); // 18
$context->changeStrategy(new DivisionStrategy)->execute($terms); // 2
$context->changeStrategy(new SumStrategy)->execute($terms); // 9
```### Chain of Responsibility:
```php
next(new SumOperation())
->next(new SubtractionOperation());$divisionOperationHandler->handle(new Operation('SUBTRACTION', 10,2)); // 8
$divisionOperationHandler->handle(new Operation('DIVISION', 10,2)); // 5
$divisionOperationHandler->handle(new Operation('SUM', 10,2)); // 12
$divisionOperationHandler->handle(new Operation('INVALID', 10,2)); // null
```### Decorator:
```php
normalize($text); // same-random-text!
```