public function __call($name, $arguments) { if (in_array($name, Config::$commands)) { if ($name === 'takeoff' || $name === 'land') { // process callback function $callback = count($arguments) === 1 ? $arguments[0] : function () { }; $eventName = $name === 'takeoff' ? 'hovering' : 'landed'; $this->once($eventName, $callback); $this->udpControl->emit($name); } else { if ($name === 'stop' || $name === 'ftrim' || $name === 'flip') { $this->udpControl->emit($name); // Control commands } else { if (count($arguments) > 1) { new \Exception('There are too many arguments'); } $this->udpControl->emit($name, array($arguments[0])); } } } else { new \Exception('Invalid function'); } }