有两种方法可以获得HttpResponse的body
。
$http = new HttpSocket();
$response = $http->get('http://www.cakephp.org');
$response->body;
和方法
$http = new HttpSocket();
$response = $http->get('http://www.cakephp.org');
$response->body();
两者都返回相同但是属性和方法之间的区别是什么?
答案 0 :(得分:2)
我认为这个方法是后来添加的,但不确定。 AFAIR在较新的2.x版本中的许多方法从3向后移植以使API更加一致,因此仍然使用Cake2的人可以将他们的2.x应用程序更新到3.x界面,以便在最终升级时减少麻烦。因此,如果两者都存在,请始终在属性上使用该方法。
由于技术原因,请参阅此问题:Calling the variable property directly vs getter/setters - OOP Design在第二个答案中解释了在属性上使用方法的原因,即具有更多选票的答案。另见这一个:Properties vs Methods
<强> TL; DR:强>
您无法在特定属性上实现特殊的get / set逻辑。对于标量(字符串,整数,布尔值)的属性,这可能没问题。但是,如果你有一个延迟加载的类实例属性呢?
一个示例是您要解析并返回其他内容的API响应,或者如果API返回错误代码则抛出异常。然后扩展HttpSocket并重载body()
方法。
但我建议你阅读整个答案,这是非常好的。