如何解释"致命错误:未捕获错误:在"中的布尔值上调用成员函数get_price()

时间:2017-09-05 11:43:24

标签: php woocommerce

在一家商店中,以下功能会引发致命错误。错误告诉了我什么?

功能:

Fatal error: 
Uncaught Error: Call to a member function get_price() on boolean in 

错误:

.navbar-nav > li {
    background-color: red;
}

这是否意味着我得到一个布尔值而不是字符串或数字?错误来自我调用get_price()

的行

3 个答案:

答案 0 :(得分:3)

  

这是否意味着我得到一个布尔值而不是字符串或数字?

完全。我假设你的$ product_id不存在,wc_get_product()在这种情况下返回false。但是,文档(https://docs.woocommerce.com/wc-apidocs/function-wc_get_product.html)说,该方法将在不存在的产品上返回null(如果您使用的是WooCommerce)。

而且:对字符串或数字的方法调用也不会起作用。您期望代码段中有一个对象。

更新

此处也要注意其他建议。

如果您使用的是具有混合返回类型的方法(在本例中为bool / object),则在将其用作对象之前,应始终先检查响应。

答案 1 :(得分:2)

如果$product是布尔值,那么这一行

$product = wc_get_product( $product_id );

失败了!

您可以先查看$product_id

中的内容

答案 2 :(得分:1)

解决此问题的一种方法是在调用预期函数之前检查您期望的类

$product = wc_get_product( $product_id )
if( $product instanceof WC_Product )
{
  $price = $product->get_price();
}

此时你可以添加更多逻辑或抛出错误。