PHP是否执行逻辑运算的所有表达式?布尔代数定律是否生效?
问题1:PHP布尔运算是否符合补余律?
符合。PHP的逻辑或运算规则完全遵循布尔代数定律,X || 非X的运算结果固定为true,和补余律的定义完全一致。
问题2:第一个条件为true时后续方法是否会执行?
不会。PHP的||运算符是短路求值的,只要前面的任意一个条件返回true,已经可以确定整个逻辑或表达式的结果为true,后续所有表达式、方法调用都会直接跳过不会执行。
你的业务代码适配结论
你现有的权限校验代码不需要做任何修改:
- 排在最前面的最高权限校验
$user->hasPermission(static::$MANAGE_ALL_ISSUES_PERMISSION_NAME)如果返回true,后面所有涉及数据库查询的校验逻辑都不会执行,不会产生多余的数据库开销,完全符合你优先校验最高权限的需求。 - 只有前面的所有条件都返回false时,才会依次执行后面的校验逻辑。
内容的提问来源于stack exchange,提问作者Bruno Francisco
相关产品推荐
相关产品推荐

