/** * * @param FixtureData $fixtureData * @param FixtureCollection $collection */ private function executeExpression(FixtureData $fixtureData, FixtureCollection $collection) { $data = $fixtureData->getData(); $lang = $this->expressionLanguage; array_walk_recursive($data, function (&$value, $key) use($lang, $collection) { if (preg_match('/^@expr\\((.*)\\)$/', $value, $hit)) { $expr = substr($value, 6, -1); $value = $lang->evaluate($expr, array('collection' => $collection)); } }); $fixtureData->setData($data); }
/** * * @param FixtureData $data * @throws FixtureException */ public function persist(FixtureData $data) { $object = $data->getObject(); $class = get_class($object); foreach ($this->mapping as $mapping) { if (!Matcher::match($class, $mapping['pattern'])) { continue; } return $mapping['persister']->persist($data); } throw new FixtureException(sprintf('not matching for class "%s"', $class)); }
/** * @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 FixtureData $data */ public function persist(FixtureData $data) { $object = $data->getObject(); $this->dm->persist($object); }
/** * * @param FixtureData $fixtureData * @return $this */ public function remove(FixtureData $fixtureData) { $key = $fixtureData->getKey(); if ($this->has($key)) { unset($this->fixtureData[$key]); } return $this; }
/** * * @param FixtureData $data */ public function persist(FixtureData $data) { $this->objects[] = $data->getObject(); }