PHP - 调用类方法

时间:2013-11-21 20:12:14

标签: php methods

我已经获得了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 的样子。 我愿意接受建议。

4 个答案:

答案 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(以便为您的所有方法自动设置这些实例变量requestresponse):

<?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');