Metabor\Statemachine\Util\StateCollectionMerger::merge PHP Метод

merge() публичный Метод

См. также: MetaborStd\MergeableInterface::merge()
public merge ( $source )
    public function merge($source)
    {
        if ($source instanceof StateCollectionInterface) {
            $this->mergeStateCollection($source);
        } elseif ($source instanceof StateInterface) {
            $this->mergeState($source);
        } elseif ($source instanceof \Traversable) {
            foreach ($source as $value) {
                $this->merge($value);
            }
        } else {
            throw new \InvalidArgumentException('Source can not be merged!');
        }
    }

Usage Example

 public function testCopiesAllFlags()
 {
     $targetCollection = new StateCollection();
     $merger = new StateCollectionMerger($targetCollection);
     $sourceCollection = $this->createSourceCollection();
     $merger->merge($sourceCollection);
     $state = $targetCollection->getState('new');
     $this->assertArrayHasKey(self::FLAG_FOR_TEST, $state);
     $this->assertEquals(self::FLAG_FOR_TEST_VALUE, $state[self::FLAG_FOR_TEST]);
     $event = $state->getEvent('start');
     $this->assertArrayHasKey(self::FLAG_FOR_TEST, $event);
     $this->assertEquals(self::FLAG_FOR_TEST_VALUE, $event[self::FLAG_FOR_TEST]);
 }