标签:php
我有一堆方法,需要测试是否已到达远程服务器,如果没有,请到达远程服务器.
我的第一个想法是__call magic方法,但是仅当未提供真实方法(具有原始名称)时才调用该方法.
public function __call( $name, $arguments ) {
$needsExecution = array(
'getBody', 'getHeader', 'getHeaders', 'getRawOutput',
'getStatusCode', 'getFullHttp'
);
if ( in_array( $name, $needsExecution ) ) {
if ( !$this->hasBeenExecuted() ) {
$this->execute();
}
}
}
public function getBody() {
return $this->responseBody;
}
public function getHeaders() {
return $this->responseHeaders;
}
?>
我真的需要在每种方法中使用一堆if吗,还是有办法更好地做到这一点?
解决方法:
像这样更改代码呢?
public function __call( $name, $arguments ) {
$needsExecution = array(
'getBody', 'getHeader', 'getHeaders', 'getRawOutput',
'getStatusCode', 'getFullHttp'
);
if ( in_array( $name, $needsExecution ) ) {
if ( !$this->hasBeenExecuted() ) {
$this->execute();
}
return $this->{'_' . $name}();
//return call_user_func(array($this, '_' . $name));
}
}
protected function _getBody() {
return $this->responseBody;
}
protected function _getHeaders() {
return $this->responseHeaders;
}
?>
标签:php
来源: https://codeday.me/bug/20191202/2085379.html