3namespace PlanetTeamSpeak\TeamSpeak3Framework\Helper;
5use PlanetTeamSpeak\TeamSpeak3Framework\Exception\HelperException;
6use PlanetTeamSpeak\TeamSpeak3Framework\Exception\SignalException;
7use PlanetTeamSpeak\TeamSpeak3Framework\Helper\Signal\Handler;
41 public function emit(
string $signal, mixed $params =
null): mixed
47 if (!is_array($params)) {
48 $params = func_get_args();
49 $params = array_slice($params, 1);
52 foreach ($this->sigslots[$signal] as $slot) {
53 $return = $slot->call($params);
68 if (!is_callable($callback,
true, $callable_name)) {
72 return md5($callable_name);
85 if (empty($this->sigslots[$signal])) {
86 $this->sigslots[$signal] = [];
91 if (!array_key_exists($index, $this->sigslots[$signal])) {
92 $this->sigslots[$signal][$index] =
new Handler($signal, $callback);
95 return $this->sigslots[$signal][$index];
106 public function unsubscribe(
string $signal, mixed $callback =
null): void
112 if ($callback !==
null) {
115 if (!array_key_exists($index, $this->sigslots[$signal])) {
119 unset($this->sigslots[$signal][$index]);
121 unset($this->sigslots[$signal]);
132 return array_keys($this->sigslots);
143 return !empty($this->sigslots[$signal]);
155 return $this->sigslots[$signal];
170 unset($this->sigslots[$signal]);
181 if (self::$instance ===
null) {
182 self::$instance =
new self();
185 return self::$instance;
Enhanced exception class for PlanetTeamSpeak\TeamSpeak3Framework\Helper\Signal\Handler objects.
Helper class providing handler functions for signals.
hasHandlers(string $signal)
unsubscribe(string $signal, mixed $callback=null)
getHandlers(string $signal)
subscribe(string $signal, mixed $callback)
clearHandlers(string $signal)
emit(string $signal, mixed $params=null)
getCallbackHash(mixed $callback)