【问题标题】:Can I call a method from the same method?我可以从同一个方法调用一个方法吗?
【发布时间】:2015-12-08 16:55:10
【问题描述】:

如果引发任何异常,我需要调用相同的方法以确保我没有复制任何代码。但是,它并没有像我想象的那样工作。以下是相关代码:

public static function getFolderObject($folder_id)
    {
        $client = new Client('https://api.box.com/{version}/folders', [
            'version' => '2.0',
            'request.options' => [
                'headers' => [
                    'Authorization' => 'Bearer ' . self::getAccessToken(),
                ]
            ]
        ]);

        $request = $client->get($folder_id);

        try {
            $response = $request->send();
            $result = $response->json();

            $files = $result['item_collection']['entries'];
        } catch (BadResponseException $e) {
            $result = $e->getResponse()->getStatusCode();

            if ($result === 401) {
                self::regenerateAccessToken();
                self::getFolderObject();
            }
        }

        return count($files) ? $files : false;
    }

如您所见,我从if 条件self::getFolderObject(); 下的方法方法调用该方法,以防止在方法开头的if 语句下再次出现重复代码。但是,如果我复制代码,它会按预期工作。有什么解决方案可以实现我想要的吗?

【问题讨论】:

  • 当您再次调用该方法时,您似乎没有传入$folder_id 变量。您还需要return 来电。

标签: php class laravel-5.1 static-methods


【解决方案1】:

你错过了返回值和分配文件夹id:

public static function getFolderObject($folder_id)
    {
        $client = new Client('https://api.box.com/{version}/folders', [
            'version' => '2.0',
            'request.options' => [
                'headers' => [
                    'Authorization' => 'Bearer ' . self::getAccessToken(),
                ]
            ]
        ]);

        $request = $client->get($folder_id);

        try {
            $response = $request->send();
            $result = $response->json();

            $files = $result['item_collection']['entries'];
        } catch (BadResponseException $e) {
            $result = $e->getResponse()->getStatusCode();

            if ($result === 401) {
                self::regenerateAccessToken();
                return self::getFolderObject($folder_id);
            }
        }

        return count($files) ? $files : false;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 2010-11-28
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多