相对于使用$PRODUCT中的属性,使用对象方法有什么好处?

时间:2019-04-04 作者:macondo_buendia

我正在从wc_get_products() 并循环通过它们在foreach中显示信息。使用$product->get_name() 结束$product->name 反之亦然?

看起来您可以将上下文变量传递到大多数get方法中,所以这似乎是一个好处,但还有其他好处吗?

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

当属性可用时,您应该始终使用方法而不是直接访问属性。

方法是对象的“API”,通过使用它们,您无需担心对象数据的内部结构,从理论上讲,它允许对对象进行设计,使其内部结构可以更改,而不会影响使用它的代码。在许多代码中,如果没有方法,属性实际上是不可能访问的。为了向后兼容,WooCommerce还没有做到这一点,并且很可能不会出于同样的原因更改数据结构,但它的最佳实践和您应该养成使用这些方法的习惯。

特别是在WooCommerce中,它还确保价值通过woocommerce_product_get_name 过滤器,这意味着该值将正确反映用户可能正在运行的其他插件所做的任何修改。例如,用户可能正在运行使用woocommerce_product_get_price 筛选以将价格转换为其他货币的适当值。如果您的代码使用$product->price 而不是$product->get_price() 那么您将在该上下文中使用不正确的值。

相关推荐

如何处理多个forloop?

I have and order\\u id as array但是wc_get_order 一次只接受一个id如何循环使用order\\u id并让项目id和项目名称的列表?我在课堂上使用这个。如果按如下所示传递单个id,则其工作正常 public function getStuffDone() { order_id =array(358,368) $order = wc_get_or