/** * @param object $object * @param FixtureData $fixtureData * @throws \DavidBadura\Fixtures\Util\ObjectAccess\ObjectAccessException */ public function finalizeObject($object, FixtureData $fixtureData) { $properties = $fixtureData->getProperties(); $data = $fixtureData->getData(); $constructor = $properties->get('constructor', array()); $args = array(); if (!empty($constructor)) { foreach ($constructor as $key) { $key = substr($key, 0, 1) == '?' ? substr($key, 1) : $key; $args[$key] = true; } } $objectAccess = new ObjectAccess($object); foreach ($data as $property => $value) { if (!isset($args[$property])) { if (is_string($value)) { $value = str_replace('{unique_id}', uniqid(), $value); } $objectAccess->writeProperty($property, $value); } } }
/** * @param FixtureCollectionEvent $event * @throws \DavidBadura\Fixtures\Util\ObjectAccess\ObjectAccessException */ public function onPostExecute(FixtureCollectionEvent $event) { $fixtures = $event->getCollection(); foreach ($fixtures as $fixture) { $properties = $fixture->getProperties(); if (!isset($properties['security']) || $properties['security'] == false) { continue; } $passwordField = isset($properties['security']['password']) ? $properties['security']['password'] : '******'; $saltField = isset($properties['security']['salt']) ? $properties['security']['salt'] : 'salt'; foreach ($fixture as $data) { $object = $data->getObject(); if (!$object) { continue; } $encoder = $this->factory->getEncoder($object); $access = new ObjectAccess($object); $password = $encoder->encodePassword($access->readProperty($passwordField), $access->readProperty($saltField)); $access->writeProperty($passwordField, $password); } } }
public function testInvalidSetDateTimeMethod() { $this->setExpectedException('DavidBadura\\Fixtures\\Util\\ObjectAccess\\ObjectAccessException'); $object = new AccessObject(); $access = new ObjectAccess($object); $access->writeProperty('dateTimeMethod', 'not valid'); $this->assertInstanceOf('\\DateTime', $object->setDateTimeMethod); }