/** * allow to change data before return for founded key using closure * * @param mixed $first * @param mixed $second * * @dataProvider baseDataProvider * @requires baseDataProvider */ public function testDataPreparationOnReturn($first, $second) { $object = new Object(); $object->putReturnCallback('#data_[\\w]+#', function ($key, $value) { if ($key === 'data_second') { return 'second'; } $value .= '_modified'; return $value; }); $this->assertTrue($object->returnReturnCallback()['#data_[\\w]+#'] instanceof \Closure); $object->stopOutputPreparation(); $object->setDataFirst($first); $this->assertEquals($first, $object->getDataFirst()); $object->startOutputPreparation(); $object->setDataFirst($first); $object->setDataSecond($second); $this->assertEquals($first . '_modified', $object->getDataFirst()); $this->assertEquals('second', $object->toArray('data_second')); $object->removeReturnCallback(); $this->assertEmpty($object->returnReturnCallback('#data_[\\w]+#')); }