_requiredParams as $param) { if (!isset($data[$param]) || $data[$param] === null) { throw new \InvalidArgumentException("Missing required param " . $param); } } $this->_data = $data; } /** * Retrieve id of element to apply command to * * @return int */ public function getId() { return $this->_data['id']; } /** * Add command as last in the list of callbacks * * @param \Magento\Backend\Model\Menu\Builder\AbstractCommand $command * @return $this * @throws \InvalidArgumentException if invalid chaining command is supplied */ public function chain(\Magento\Backend\Model\Menu\Builder\AbstractCommand $command) { if ($this->_next === null) { $this->_next = $command; } else { $this->_next->chain($command); } return $this; } /** * Execute command and pass control to chained commands * * @param array $itemParams * @return array */ public function execute(array $itemParams = []) { $itemParams = $this->_execute($itemParams); if ($this->_next !== null) { $itemParams = $this->_next->execute($itemParams); } return $itemParams; } /** * Execute internal command actions * * @param array $itemParams * @return array */ abstract protected function _execute(array $itemParams); }