程序的精炼写法

$result = [];

$listeners = $this->listener[$event] ?? [];

$listeners = array_unique($listeners, SORT_REGULAR);

foreach ($listeners as $key => $listener) {

    $result[$key] = $this->dispatch($listener, $params);

    if (false === $result[$key] || (!is_null($result[$key]) && $once)) {  // isset  === (!is_null) isset是语句  is_null()是函数

        break;

    }

}

return $once ? end($result) : $result;   

上边的代码,是一个循环过程,其中有if判断条件,达成条件则退出循环,否则执行循环直到栈都被遍历了。

最后的return值是根据上边if判断来决定的,

因为if中有三组条件,

条件一、false === $result[$key] ,这是值完全等价为false时

条件二、||  是条件一为假时才执行 ,前一个条件内容为值存在,执行 !is_null($result[$key])  && $once

条件三、!is_null($result[$key]) === isset($result[$key]) ,当$result[$key]存在时,判断$once的值

以上分析,

$once为真,执行end($result),指针指向数组最后一个元素,

$once为假,执行$result,返回数组。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容