我已经获得了PHP课程,我对完全重组它并不感兴趣。 (它有效!)
但我想在一些方法中添加一些修改。
以下是该课程中的众多方法之一:
<?php
class SomeFunClass {
public function getAccountInfo()
{
$request = $this->prepareRequest('get_account_info');
$response = $this->execute($request);
return $response;
}
}
?>
返回 $ response 是一个字符串值。
我已经谈到我需要返回 $ request 字符串,这恰好是json
字符串。
prepareRequest()方法总是返回一个json
字符串,然后传递给 exec()方法,该方法只是通过cURL发送数据到域名。
我想提取 $ request 字符串(当我调用 getAccountInfo()方法时),以供日后查看。
这就是我现在正在做的事情:
<?php
$api = new SomeFunClass();
$curlresponse = $api->getAccountInfo();
?>
显然,上面的例子只能让我回答cURL的反应。 很高兴调用一种方法让我看到 $ request 的样子。 我愿意接受建议。
答案 0 :(得分:2)
只需返回一个包含和请求的数组:
<?php
class SomeFunClass {
public function getAccountInfo()
{
$request = $this->prepareRequest('get_account_info');
$response = $this->execute($request);
return array('request' => $request, 'response' => $response);
}
}
?>
答案 1 :(得分:1)
您可以修改这些方法,将最后一个请求存储到当前类的属性中:
<?php
class SomeFunClass {
$last_request;
...
public function getAccountInfo()
{
$request = $this->prepareRequest('get_account_info');
$last_request = request;
$response = $this->execute($request);
return $response;
}
public function getLastRequest()
{
return $this -> last_request;
}
}
?>
或者,更好的是,如果prepareRequest
是您的方法,那么只需修改此方法即可存储最后一个请求。
答案 2 :(得分:0)
您可以这样做:
<?php
class SomeFunClass {
public $request;
public $response;
public function getAccountInfo()
{
$this->request = $this->prepareRequest('get_account_info');
$this->response = $this->execute($this->request);
return $this->response;
}
}
?>
现在,您可以这样做:
<?php
$api = new SomeFunClass();
$curlresponse = $api->getAccountInfo();
$request = $api->request;
?>
理想情况下,您可以像这样实现您的类以实际利用OOP(以便为您的所有方法自动设置这些实例变量request
和response
):
<?php
class SomeFunClass {
public $request;
public $response;
public function getAccountInfo()
{
$this->prepareRequest('get_account_info');
return $this->execute();
}
public function anotherMethod()
{
$this->prepareRequest('another_method', 'some', 'args');
return $this->execute();
}
public function prepareRequest()
{
$args = func_get_args(); // contains your arguments
$method = array_shift($args); // contains your method name
...
...
$this->request = $return // value returned by this method
}
public function execute()
{
$request = $this->request;
...
...
$this->response = $return // value returned by this method
}
}
?>
答案 3 :(得分:0)
你也可以这样做:
<?php
class SomeFunClass {
public function reviewRequest($request)
{
return $this->prepareRequest($request);
}
}
然后:
<?php
$api = new SomeFunClass();
$request = $api->reviewRequest('get_account_info');