我在WordPress中看到以下代码,但不了解正在进行的操作:
$debug_mode = 'yes' === get_option( 'woocommerce_shipping_debug_mode', 'no' );
这看起来像是(1)设置变量和(2)检查它是否与WordPress中设置的选项相同的某种组合。在这种情况下,谁能说出逻辑/运算符?
此外,为什么有人可能会使用这种说法而不是仅仅获得选择权?
答案 0 :(得分:2)
这就是所谓的ternary。
但是,由于代码风格(缺少括号),所以很难看到实际发生的情况。
$debug_mode = 'yes' === get_option( 'woocommerce_shipping_debug_mode', 'no' );
我的偏好是将条件包装在括号中,以使其更加明显:
$debug_mode = ( 'yes' === get_option( 'woocommerce_shipping_debug_mode', 'no' ) );
现在看起来更像是什么了-对变量$debug_mode
的赋值是woocommerce_shipping_debug_mode
选项是否是===
到{{ 1}}(它将返回yes
或TRUE
。
这看起来像是“长手”:
FALSE
但是,由于条件仍然返回$debug_mode = ( 'yes' === get_option( 'woocommerce_shipping_debug_mode', 'no' ) ) ? TRUE : FALSE;
或TRUE
,因此FALSE
部分是多余的。
要明确要回答您的第二个问题,“为什么有人会使用此选项”-他们是只是获得了期权价值-他们这样写是因为它是<简述。这是为什么我们应该为人类而不是为机器编写代码 的完美示例:)
答案 1 :(得分:1)
在这种情况下,您没有获得该选项,而是将检查结果分配给debug_mode
。逻辑运算===
优先于赋值,因此评估中途返回
$debug = true; // if the get_option is set to 'yes'
和
$debug = false; // otherwise
答案 2 :(得分:0)
您可能有许多环境(生产,测试,开发),并且每个环境都有 woocommerce_shipping_debug_mode 键的自定义选项,并且您不想在生产站点上显示调试信息。此外,此密钥可能不存在,这就是为什么您选择具有默认值的选项