psrly / huggables
PSR-8 compliant implementation of Huggable Interfaces
1.0.1
2018-08-25 08:13 UTC
Requires
- php: ^7.2
Requires (Dev)
- pds/skeleton: ^1
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2024-09-29 05:02:08 UTC
README
PSR-8 compliant implementation of Huggable Interfaces
Install
composer require psrly/huggables ^1
Usage
Using existing Hugger implementations
<?php require_once __DIR__ . '/vendor/autoload.php'; use Psrly\Hugger; // all hugger implementations can be given an optional hug limit and name // simple silent hugger (no side effects, no state change) $silent = new Hugger\Silent; // simple verbose hugger (writes to output on hugging) $verbose = new Hugger\Verbose; $verbose->hug($silent); // -> "X is being hugged by Y" // -> "X is hugging back Y" // simple satisfiable hugger (increments satisfaction on hugging) $satisfactionThreshold = 3; // satisfied after hugging three times $satisfiable = Satisfiable($satisfactionThreshold); // hugged 0 times = not satisfied $satisfiable->isSatisfied(); // false $satisfiable->hug($silent); // hugged 1 time = not satisfied $satisfiable->isSatisfied(); // false $satisfiable->hug($silent); $satisfiable->hug($silent); // hugged 3 times = satisfied $satisfiable->isSatisfied(); // true
Creating your own Hugger implementation
<?php use Psrly\Hugger; final class MyHugger extends Hugger { protected function onBeingHuggedBy(Huggable $h): void { // change state / cause side effects on being hugged } protected function onHuggingBack(Huggable $h): void { // change state / cause side effects on hugging back } }