既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
public function on($name, $handler, $data = null, $append = true)
{
// 判断要添加的事件是否已经被监听,实现给一个事件绑定多个回调函数
if ($append || empty($this->events[$name])) {
$this->events[$name][] = [$handler, $data];
} else {
// 如果这个事件没有被监听过就添加一个新的监听
array\_unshift($this->events[$name], [$handler, $data]);
}
}
// 解绑事件
public function off($name, $handler = null)
{
// 如果事件不存在,返回 false
if (empty($this->events[$name])) {
return false;
}
// 如果没有指定具体的回调函数,则删除这个事件的所有回调
if ($handler === null) {
unset($this->events[$name]);
return true;
}
$removed = false;
// plain event names
if (isset($this->events[$name])) {
// 通过循环删除指定中的回调函数
foreach ($this->events[$name] as $i => $event) {
if ($event[0] === $handler) {
unset($this->events[$name][$i]);
$removed = true;
}
}
if ($removed) {
// 如果删除成功,则重建一个事件回调函数数组的索引
$this->events[$name] = array\_values($this->events[$name]);
return $removed;
}
}
return $removed;
}
// 触发事件
public function trigger($name)
{
$eventHandlers = [];
if (!empty($this->events[$name])) {
$eventHandlers = array\_merge($eventHandlers, $this->events[$name]);
}
if (!empty($eventHandlers)) {
foreach ($eventHandlers as $handler) {
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
且后续会持续更新**