下午维护了我的 Fantasy 主题,主要给他增加了一个哔哩哔哩番剧的获取功能,同时自制了一个新的图片,用于覆盖顶上标题那个模糊的 png 原图,并且修改了备案号的链接。
在该版本发布不久后,群友发现了一个问题。他表示,把自己的 ID 填进去之后,页面出来的并非是他的番剧。经过我的仔细检查,发现的问题其实是一行三元表达式存在问题。在嵌套三元表达式的情况下,第二次嵌套必须加上小括号,否则会无视其他规则,直接执行右数第一个三元表达式的结果。
$uid = $bgm_user ? $bgm_user : $mode === "bili" ? 124512959 : 433599;
$uid = $bgm_user ? $bgm_user : ($mode === "bili" ? 124512959 : 433599);
这两段代码在 $bgm_user
未赋值的情况下,结果都相同。但如果 $bgm_user
被赋值了,结果前者返回的是 124512959
而不是 $bgm_user
。很明显,这就不符合我们的预期了。今日踩坑一时,是为了下一次不再遇到它!