judahnator/mirror

PHP 对象和数组的镜像

v1.0.0 2020-09-22 10:07 UTC

This package is not auto-updated.

Last update: 2024-09-19 11:03:39 UTC


README

我先说明一下

  • 如果你认为你需要这个,那么你不需要。
  • 如果你知道你需要这个,那么你已经知道你不应该使用它。

说这些之后,这是什么?这是一个垫片,允许你返回一个原本需要引用的具体对象。如果你试图提供一个透明化的getter/setter接口,并与另一种数据类型接口一起使用,这会很有用。

通过这样做,你可以像操作普通对象或列表一样与具体对象交互,并将更改反映在原始输入上。

示例

列表

$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);

对象

$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);