cakepp HttpSocket响应体和body之间的区别()

时间:2015-10-21 14:47:24

标签: php cakephp httpresponse

有两种方法可以获得HttpResponsebody

$http = new HttpSocket();
$response = $http->get('http://www.cakephp.org');
$response->body;

和方法

$http = new HttpSocket();
$response = $http->get('http://www.cakephp.org');
$response->body();

两者都返回相同但是属性和方法之间的区别是什么?

1 个答案:

答案 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()方法。

但我建议你阅读整个答案,这是非常好的。