Nelmio\Alice\Parser\IncludeProcessor\IncludeDataMerger::mergeInclude PHP Method

mergeInclude() public method

Merges a parsed file data with another. If some data overlaps, the existent data is kept, i.e. the included data is discarded.
public mergeInclude ( array $data, array $includeData ) : array
$data array Parsed file data
$includeData array Parsed file data to merge
return array
    public function mergeInclude(array $data, array $includeData) : array
    {
        foreach ($data as $class => $fixtures) {
            // $class is either a FQCN or 'parameters'
            $includeData[$class] = array_key_exists($class, $includeData) && is_array($includeData[$class]) && is_array($fixtures) ? array_merge($includeData[$class], $fixtures) : $fixtures;
        }
        return $includeData;
    }

Usage Example

Example #1
0
 /**
  * @inheritdoc
  */
 public function process(ParserInterface $parser, string $file, array $data) : array
 {
     if (false === array_key_exists('include', $data)) {
         throw InvalidArgumentExceptionFactory::createForNoIncludeStatementInData($file);
     }
     $include = $data['include'];
     unset($data['include']);
     if (null === $include) {
         return $data;
     }
     if (false === is_array($include)) {
         throw TypeErrorFactory::createForInvalidIncludeStatementInData($include, $file);
     }
     foreach ($include as $includeFile) {
         if (false === is_string($includeFile)) {
             throw TypeErrorFactory::createForInvalidIncludedFilesInData($includeFile, $file);
         }
         if (0 === strlen($includeFile)) {
             throw InvalidArgumentExceptionFactory::createForEmptyIncludedFileInData($file);
         }
         $filePathToInclude = $this->fileLocator->locate($includeFile, dirname($file));
         $fileToIncludeData = $parser->parse($filePathToInclude);
         if (array_key_exists('include', $fileToIncludeData)) {
             $fileToIncludeData = $this->process($parser, $file, $fileToIncludeData);
         }
         $data = $this->dataMerger->mergeInclude($data, $fileToIncludeData);
     }
     return $data;
 }
IncludeDataMerger