judahnator / mirror
Mirror for PHP objects and arrays
v1.0.0
2020-09-22 10:07 UTC
Requires
- php: ^7.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16.1
- phpstan/phpstan: ^0.12.19
- phpunit/phpunit: ^9.1
This package is not auto-updated.
Last update: 2024-11-14 11:44:05 UTC
README
I'll preface with this:
- If you think you need this, you don't.
- If you know you need this, you already know that you shouldn't use it.
With that out of the way, what is this? This is a shim that allows you to return a concrete object that would otherwise need to be a reference. This can be handy if you are trying to provide a transparent getter/setter interface with an interface with another data type.
By doing this you can interact with a concrete object as if you would a normal object or list, and have the changes reflected back on the original input.
Examples
Lists:
$foods = ['Apples', 'Bananas', 'Celery'];
$mirror = \judahnator\Mirror\MirrorType::of($foods);
$mirror[] = 'Cake'; // Everybody likes cake
unset($mirror[2]); // Nobody likes celery
// ["Apples","Bananas","Cake"]
print_r($foods);
Objects:
$weather = json_decode('{"skies": "cloudy", "rain": true}');
$mirror = \judahnator\Mirror\MirrorType::of($weather);
$mirror->skies = 'clear';
$mirror->rain = false;
$mirror->temp = 72;
// (object)['skies' => 'clear', 'rain' => false, 'temp' => 72]
print_r($weather);