在另一个公共函数中使用一个公共函数

时间:2013-12-13 15:12:26

标签: php

标题可能没有意义,不确定如何说出来。无论如何,我在这里使用防暴游戏API练习卷曲和OOP。 API是一种愚蠢的设置,你想要请求的某些信息需要你手边不知道的输入,所以它需要另外一个单独的调用才能获得所需的信息。

class league
{
    const URL = 'http://prod.api.pvp.net/api/lol/na/v1.1/';
    const URL_2 = 'http://prod.api.pvp.net/api/lol/na/v2.1/';
    const KEY = 'key';

    public function summonerByName($summoner_name)
    {
        $request = 'summoner/by-name/' . $summoner_name . '?api_key =' . self::KEY;
        return $this->fetch($request);
    }

    public function recentGamesByName($summoner_name)
    {
        //need to make two calls for this since you cant get recent games by name in the api

        $id = summonerByName($summoner_name);

        //now get recent games
        $request = 'game/by-summoner/' . $id->id . '/recent';
        return $this->fetch($request);
    }   


    private function fetch($request)
    {
        $url = self::URL . $request . '?api_key=' . self::KEY;
        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $data = curl_exec($curl);
        curl_close($curl);
        return json_decode($data);
    }
}

这将返回Fatal error: Call to undefined function summonerbyname()

如果我在public function recentGamesByName()而不是$id = summonerByName()使用下面的所有这些额外代码,它可以正常工作,但似乎没必要,我想用这个函数替换它。

$grg = self::URL . 'summoner/by-name/' . $summoner_name . '?api_key=' . self::KEY;
$placeholder = curl_init($grg);
curl_setopt($placeholder, CURLOPT_RETURNTRANSFER, 1);
$ph_result = curl_exec($placeholder);
curl_close($placeholder);
$ph_result = json_decode($ph_result);

2 个答案:

答案 0 :(得分:1)

$id = $this->summonerByName($summoner_name);

您可能想要阅读OOP。

答案 1 :(得分:0)

关于OOP需要记住的几件事。当你在课堂上并需要调用另一个函数时,你可以使用特殊的$ this变量。

所以你会使用:

$someVariable = $this->summonerByName($summoner_name);

从该函数中获取结果。

如果你在课外,需要访问该功能,那么你需要将整个类分配给一个变量,如下所示:

$league = new league();

然后您可以使用该变量访问类中的任何函数。

所以你可以......

$someVariable = $league->summonerByName($summoner_name);

如果您已将班级分配给变量名称$ league。顺便说一句,那个$ league变量?它被称为对象。因此面向对象编程。对象有点像数组,但使用不同的语法。你可以print_r一个对象,就像你可以print_r一个数组。访问对象的变量时,使用$ objectName-> variableName语法,而不是在数组中使用的$ arrayName ['variablename']语法。