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;
|
|
}
|
|
}
|
|
} |