在一家商店中,以下功能会引发致命错误。错误告诉了我什么?
功能:
Fatal error:
Uncaught Error: Call to a member function get_price() on boolean in
错误:
.navbar-nav > li {
background-color: red;
}
这是否意味着我得到一个布尔值而不是字符串或数字?错误来自我调用get_price()
的行答案 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();
}
此时你可以添加更多逻辑或抛出错误。