/** * @param array $config * @param string $configPath * * @return FixtureGeneratorRule * * @throws \Exception */ private function createRuleFromConfig(array $config, string $configPath) : FixtureGeneratorRule { if (empty($config)) { throw new \Exception('Config array is empty'); } $rule = new FixtureGeneratorRule(); if (!empty($key)) { $rule->setKey($key); } if (isset($config['prefix'])) { $rule->setPrefix($config['prefix']); } if (isset($config['strategy'])) { $rule->setStrategy($config['strategy']); } if (isset($config['count_repeat'])) { $rule->setCountRepeat($config['count_repeat']); } if (isset($config['referenceArray'])) { $rule->setReferenceArray(json_decode(file_get_contents($configPath . '/' . $config['referenceArray'] . '.json'), true)); } if (isset($config['rules'])) { foreach ($config['rules'] as $key => $item) { $rule->addRule($this->createRuleFromConfig($item, $configPath)); } } /* @var FixtureGeneratorRule $rule */ return $rule; }