【发布时间】:2020-09-03 15:12:29
【问题描述】:
我有一门别人写的课。它为我做了很多事情,它为我做的一件事是它向外部服务发出请求。
public function makeRequest() {
...bunch of curl stuff here
}
所以我想做的是修改类的构造函数,以便我可以传入一个函数,并且可以在 curl 内容之后调用该函数。我来自 javascript 背景,所以我肯定做错了,但这就是我所做的:
private $requestLogger;
public function __construct(...other variables, $requestLogger = null) {
if ($requestLogger) {
$this->requestLogger = $requestLogger;
}
}
public function makeRequest() {
...bunch of curl stuff here
if ($this->requestLogger) {
$curlInfo = curl_getinfo($ch);
$this->requestLogger($curlInfo['url'], $curlInfo['http_code'], $request, $response);
}
}
当我创建一个新实例时,我可以这样做
$client = new ApiClient(..., function($url, $responseCode, $requestText, $responseText){
// do whatever i want here
});
但是,这没有奏效。我收到这条消息:500: Call to undefined method ApiClient::requestLogger()
如何设置自己以将回调函数传递给此类?
【问题讨论】:
-
不确定我在哪里看到的,但你应该可以做到
($this->requestLogger)(.......