设置PHP变量并同时获取WooCommerce选项?

时间:2018-11-27 13:52:23

标签: php wordpress variables woocommerce

我在WordPress中看到以下代码,但不了解正在进行的操作:

$debug_mode = 'yes' === get_option( 'woocommerce_shipping_debug_mode', 'no' );

这看起来像是(1)设置变量和(2)检查它是否与WordPress中设置的选项相同的某种组合。在这种情况下,谁能说出逻辑/运算符?

此外,为什么有人可能会使用这种说法而不是仅仅获得选择权?

3 个答案:

答案 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}}(它将返回yesTRUE

这看起来像是“长手”:

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 键的自定义选项,并且您不想在生产站点上显示调试信息。此外,此密钥可能不存在,这就是为什么您选择具有默认值的选项