38 lines
		
	
	
		
			992 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			992 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace Ratchet\Resource\Command;
 | |
| use Ratchet\Application\ApplicationInterface;
 | |
| 
 | |
| class Composite extends \SplQueue implements CommandInterface {
 | |
|     /**
 | |
|      * Add another Command to the stack
 | |
|      * Unlike a true composite the enqueue flattens a composite parameter into leafs
 | |
|      * @param CommandInterface
 | |
|      */
 | |
|     public function enqueue(CommandInterface $command = null) {
 | |
|         if ($command instanceof self) {
 | |
|             foreach ($command as $cmd) {
 | |
|                 $this->enqueue($cmd);
 | |
|             }
 | |
| 
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         if (null !== $command) {
 | |
|             parent::enqueue($command);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function execute(ApplicationInterface $scope = null) {
 | |
|         $this->setIteratorMode(static::IT_MODE_DELETE);
 | |
| 
 | |
|         $recursive = new self;
 | |
| 
 | |
|         foreach ($this as $command) {
 | |
|             $recursive->enqueue($command->execute($scope));
 | |
|         }
 | |
| 
 | |
|         if (count($recursive) > 0) {
 | |
|             return $recursive;
 | |
|         }
 | |
|     }
 | |
| } | 
