GraphQL\Validator\Messages::cycleErrorMessage PHP Method

cycleErrorMessage() static public method

static public cycleErrorMessage ( $fragmentName, $spreadNames )
    static function cycleErrorMessage($fragmentName, $spreadNames)
    {
        return "Cannot spread fragment {$fragmentName} within itself" . (!empty($spreadNames) ? " via " . implode(', ', $spreadNames) : '') . '.';
    }

Usage Example

Example #1
0
 private function detectCycleRecursive($fragmentName, array $spreadsInFragment, \SplObjectStorage $knownToLeadToCycle, $initialName, array &$spreadPath, &$errors)
 {
     $spreadNodes = $spreadsInFragment[$fragmentName];
     for ($i = 0; $i < count($spreadNodes); ++$i) {
         $spreadNode = $spreadNodes[$i];
         if (isset($knownToLeadToCycle[$spreadNode])) {
             continue;
         }
         if ($spreadNode->name->value === $initialName) {
             $cyclePath = array_merge($spreadPath, [$spreadNode]);
             foreach ($cyclePath as $spread) {
                 $knownToLeadToCycle[$spread] = true;
             }
             $errors[] = new Error(Messages::cycleErrorMessage($initialName, array_map(function ($s) {
                 return $s->name->value;
             }, $spreadPath)), $cyclePath);
             continue;
         }
         foreach ($spreadPath as $spread) {
             if ($spread === $spreadNode) {
                 continue 2;
             }
         }
         $spreadPath[] = $spreadNode;
         $this->detectCycleRecursive($spreadNode->name->value, $spreadsInFragment, $knownToLeadToCycle, $initialName, $spreadPath, $errors);
         array_pop($spreadPath);
     }
 }
All Usage Examples Of GraphQL\Validator\Messages::cycleErrorMessage