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

Php 在另一个公共函数中使用一个公共函数,php,Php,标题可能没有意义,不知道如何表达。无论如何,我在这里同时使用riot games API练习curl和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

标题可能没有意义,不知道如何表达。无论如何,我在这里同时使用riot games API练习curl和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);
    }
}
这将返回
致命错误:调用未定义的函数callerByName()

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

$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);

$id=$this->callerByName($caller\u name)


您可能想了解OOP。

关于OOP,有几件事需要记住。当您在类中并且需要调用另一个函数时,可以使用特殊的$this变量

因此,您可以使用:

$someVariable = $this->summonerByName($summoner_name);
从该函数中获取结果

$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);
如果您在类之外并且需要访问该函数,则需要将整个类分配给如下变量:

$league = new league();
然后可以使用该变量访问类中的任何函数

所以你可以

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

如果您已经将该类分配给变量名$league。顺便问一下,那个$league变量?这叫做物体。因此,面向对象编程。对象有点像数组,但使用不同的语法。可以像打印数组一样打印对象。访问对象变量时,使用$objectName->variableName语法,而不是数组中使用的$arrayName['variableName']语法。

我将其切换为
$id=$this->callerByName($caller\u name)。现在,
$id->id
什么都不是。事实上,
var\u dump($id)
什么都不是。不过这只是callerByName函数的一个问题,但这就是我错的地方。谢谢我已经弄明白了其中的大部分。只是被
$this
用法弄糊涂了。我一直只使用数组,在大多数情况下从未看到指向对象的点。现在尝试理解对象哈