Esempio n. 1
0
 /**
  * @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);
     }
 }