Efficiently\AuthorityController\ControllerAdditions::flushAuthorityEvents PHP Method

flushAuthorityEvents() public static method

If $controllerName == '*', it removes all the Authority-Controller events of every Controllers of the application. \App\Http\Controllers\Controller::flushAuthorityEvents('*'); // Remove all Authority-Controller events of every Controllers \App\Http\Controllers\ProjectsController::flushAuthorityEvents(); // Remove all Authority-Controller events of ProjectsController
public static flushAuthorityEvents ( $controllerName = null ) : void
return void
    public static function flushAuthorityEvents($controllerName = null)
    {
        $controllerName = $controllerName ?: get_called_class();
        $events = app('events');
        $listeners = (array) get_property($events, 'listeners');
        foreach ($listeners as $eventName => $listener) {
            $remove = false;
            // flag
            if ($controllerName === "*") {
                // All Controllers
                if (starts_with($eventName, "router.filter: controller.")) {
                    $remove = true;
                }
            } elseif (preg_match("/^router\\.filter: controller\\.[^.]+?\\.{$controllerName}/", $eventName)) {
                $remove = true;
            }
            if ($remove) {
                $events->forget($eventName);
            }
        }
    }