如何改进PHP中的代码结构?

时间:2016-05-10 09:48:39

标签: php performance laravel-5

我在Laravel的控制器中创建了两个方法,使用 PHP CURL 从另一个网站获取数据并传递给视图。 我将 httpData 方法用于初始 ID 网址以及 getHttpCode 方法以获取 HTTP_code 当我从其他网站获取数据时会发现任何错误但是我对这下面的代码性能不太了解,我如何测试 PHPstrom 以确保性能

这是我的功能

 private function httpData($url =null, $id = null)
    {
        if($id){
            $url = 'http://assignment.gae.golgek.mobi/api/v1/items/'.$id;
        }
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLINFO_PRETRANSFER_TIME, 30);
        curl_setopt($ch, CURLINFO_HTTP_CODE, true);
        curl_setopt($ch, CURLOPT_PRIVATE, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);

        if (!$executed = curl_exec($ch)) {

            $res = $executed;
            $data = false;
            curl_close($ch);
        } else {

            if ($this->http_code = $this->getHttpCode(curl_getinfo($ch))) {

                $res = $this->http_code;
                $data = $executed;
            } else {
                $res = false;
            }
        }
        return ['s_respond' => $res, 'data' => $executed];
    }

    private function getHttpCode($http)
    {
        if (is_array($http)) {
            if (!empty($http['http_code'] || $http['http_code'] != 0)) {
                return $http['http_code'];
            } else {
                return false;
            }
        } else {
            return false;
        }
    }

我会将此方法称为以下

public function sendData()
{
    $url = 'website/api/v1/products';
    $data = $this->httpData($url);
    return view('products.list', ['data'=>$data]);
}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我建议您添加早期返回模式'。

我在你的getHttpCode中做了一次重写,对我来说似乎更清楚了:

private function getHttpCode($http)
{
    if ( !is_array($http) 
      || empty($http['http_code'])
      || $http['http_code'] === 0)
    {
        return false;
    }

    return $http['http_code'];
}