Files
人事系统开发 1ba6efd8ed MRBS 1.12.2 等保2.0二级整改完整提交
包含:登录失败锁定、90天密码有效期、30分钟会话超时、
强制改密、登录审计日志、屏幕水印、企业背景图、
备案信息固定底部、favicon、JS空集合保护、
会话过期体验优化(403 JSON)、display_errors 关闭、
固定 key 根治 Integrity check failed 等全部改动

注意:config.inc.php/.htaccess/.user.ini 含敏感信息,
通过 .gitignore 排除,勿推送到公开仓库。
2026-09-09 16:55:02 +08:00

86 lines
1.7 KiB
PHP

<?php
/*
* File: HasEvents.php
* Category: -
* Author: M.Goldenbaum
* Created: 21.09.20 22:46
* Updated: -
*
* Description:
* -
*/
namespace Webklex\PHPIMAP\Traits;
use Webklex\PHPIMAP\Events\Event;
use Webklex\PHPIMAP\Exceptions\EventNotFoundException;
/**
* Trait HasEvents
*
* @package Webklex\PHPIMAP\Traits
*/
trait HasEvents {
/**
* Event holder
*
* @var array $events
*/
protected array $events = [];
/**
* Set a specific event
* @param string $section
* @param string $event
* @param mixed $class
*/
public function setEvent(string $section, string $event, mixed $class): void {
if (isset($this->events[$section])) {
$this->events[$section][$event] = $class;
}
}
/**
* Set all events
* @param array $events
*/
public function setEvents(array $events): void {
$this->events = $events;
}
/**
* Get a specific event callback
* @param string $section
* @param string $event
*
* @return Event|string
* @throws EventNotFoundException
*/
public function getEvent(string $section, string $event): Event|string {
if (isset($this->events[$section])) {
return $this->events[$section][$event];
}
throw new EventNotFoundException();
}
/**
* Get all events
*
* @return array
*/
public function getEvents(): array {
return $this->events;
}
/**
* Dispatch a specific event.
* @throws EventNotFoundException
*/
public function dispatch(string $section, string $event, mixed ...$args): void {
$event = $this->getEvent($section, $event);
$event::dispatch(...$args);
}
}