/** * @param FixtureGeneratorRule $rule * * @return int|string * * @throws \Exception */ private function generateChunk(FixtureGeneratorRule $rule) { switch ($rule->getStrategy()) { case FixtureGeneratorStrategy::PREFIX_WITH_NUMBER: $value = $rule->getNumber(); $rule->setNumber($rule->getNumber() + 1); return $value; case FixtureGeneratorStrategy::REFERENCE: if (!empty($rule->getReferenceArray())) { $referenceArray = $rule->getReferenceArray(); } if (!empty($rule->getReferenceConfigFile())) { $referenceArray = json_decode(file_get_contents($this->getPathToFixtures() . DIRECTORY_SEPARATOR . $rule->getReferenceConfigFile()), true); } if (empty($referenceArray)) { throw new \Exception('ReferenceArray is needed for the rule: '); } return $referenceArray[mt_rand(0, count($referenceArray) - 1)]['referenceName']; case FixtureGeneratorStrategy::WORD: if (empty($rule->getWords())) { throw new \Exception('words is needed for the rule `words`'); } return $rule->getWords()[mt_rand(0, count($rule->getWords()) - 1)]; case FixtureGeneratorStrategy::NEXT_WORD: if (empty($rule->getWords())) { throw new \Exception('words is needed for the rule `next_word`'); } $word = $rule->getWords()[$rule->getNumber()]; if (isset($rule->getWords()[$rule->getNumber() + 1])) { $rule->setNumber($rule->getNumber() + 1); } else { $rule->setNumber(0); } return $word; default: return mt_rand(1, 1000); } }