function testObserve() { $foo = \arc\prototype::create([]); $f = function ($ob, $name, $value) { return false; }; \arc\prototype::observe($foo, $f); $foo->bar = 'bar'; $this->assertArrayNotHasKey('bar', \arc\prototype::entries($foo)); \arc\prototype::unobserve($foo, $f); $foo->bar = 'bar'; $this->assertEquals($foo->bar, 'bar'); \arc\prototype::observe($foo, $f); $foo->bar = 'baz'; $this->assertEquals($foo->bar, 'bar'); }
function testObserve() { $foo = \arc\prototype::create([]); $log = []; $f = function ($changes) use(&$log) { $log[] = $changes; }; \arc\prototype::observe($foo, $f); $foo->bar = 'bar'; $this->assertEquals('bar', $log[0]['name']); $this->assertEquals('add', $log[0]['type']); $foo->bar = 'foo'; $this->assertEquals('bar', $log[1]['name']); $this->assertEquals('update', $log[1]['type']); $this->assertEquals('bar', $log[1]['oldValue']); unset($foo->bar); $this->assertEquals('bar', $log[2]['name']); $this->assertEquals('delete', $log[2]['type']); $this->assertEquals('foo', $log[2]['oldValue']); }