将guzzle与CakePHP 2.x结合使用
我正在尝试在CakePHP2.x应用程序上使用 我需要做的是将Guzzle客户端初始化到我的一些控制器上,但在将加载它的控制器上,我需要使用相同的配置加载它 基本上,我不知道哪种方法是实现它的最佳方法。我在想以下几点:将guzzle与CakePHP 2.x结合使用,php,cakephp,guzzle,cakephp-2.x,Php,Cakephp,Guzzle,Cakephp 2.x,我正在尝试在CakePHP2.x应用程序上使用 我需要做的是将Guzzle客户端初始化到我的一些控制器上,但在将加载它的控制器上,我需要使用相同的配置加载它 基本上,我不知道哪种方法是实现它的最佳方法。我在想以下几点: 我是否应该在AppController中创建一个函数,该函数将创建并返回一个Guzzle对象,然后将其保存到AppController中受保护的属性中?可能是像setUpGuzzle()这样的函数,并在我需要加载Guzzle客户端的控制器上调用此函数 我是否应该创建一个组件,然后
AppController
中创建一个函数,该函数将创建并返回一个Guzzle对象,然后将其保存到AppController
中受保护的属性中?可能是像setUpGuzzle()
这样的函数,并在我需要加载Guzzle客户端的控制器上调用此函数$this->HttpClient->client->post()
$this->HttpClient->post()
你真的需要狂饮吗?我同意旧的Cake2 HTTP套接字已经过时了,但是是否有一些东西它不能做,需要您添加另一个库 使用一个trait,只要你不拘泥于一个古老的php版本,这是一个干净的解决方案。下面是一些伪代码,它们将为您提供高层次的想法:
trait HttpSocket {
protected $_httpSocket = null;
protected $_httpSocketConfig = [
// Default config goes here
];
public function getHttpSocket() {
if (empty($this->_httpSocket)) {
// Not sure how the constructur works, so it's just an example
$this->_httpSocket = new Guzzle($this->_httpSocketConfig);
}
return $this->_httpSocket;
}
}
如果需要更改配置或整个套接字实现,只需在单个位置进行更改,而无需组件的开销。这也可以用于任何类,而不仅仅是控制器。您所寻找的或多或少是一个简单的类似工厂的方法,不需要整个控制器
如果你不能使用trait,那么你就必须使用一个组件,或者只是将上面的代码不放在trait或组件中,而是直接放在AppController中,但是您将无法在继承该控制器的控制器范围之外使用它。是否有任何方法将Guzzle客户端注册为组件?如果您如此痴迷于将其作为组件使用,只需将相同的代码应用于组件,或通过magic \u call()方法在组件内部创建Guzzle代理。