82

我有这个控制器,function read($q)返回错误Call to undefined function sendRequest()

<?php

class InstagramController extends BaseController {

/*
|--------------------------------------------------------------------------
| Default Home Controller
|--------------------------------------------------------------------------
|
| You may wish to use controllers instead of, or in addition to, Closure
| based routes. That's great! Here is an example controller method to
| get you started. To route to this controller, just add the route:
|
|   Route::get('/', 'HomeController@showWelcome');
|
*/

public function read($q)
{
    $client_id = 'ea7bee895ef34ed08eacad639f515897';

    $uri = 'https://api.instagram.com/v1/tags/'.$q.'/media/recent?client_id='.$client_id;
    return sendRequest($uri);
}

public function sendRequest($uri){
    $curl = curl_init($uri);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    $response = curl_exec($curl);
    curl_close($curl);
    return $response;
}

}

我假设这是因为我以错误的方式引用了该函数,但我找不到任何有关如何执行此操作的解释。

4

4 回答 4

184

尝试:

return $this->sendRequest($uri);

由于 PHP 不是纯面向对象的语言,因此它解释sendRequest()为尝试调用全局定义的函数(就像nl2br()示例一样),但由于您的函数是类 ('InstagramController') 的一部分,因此您需要使用$this指向口译员在正确的方向。

于 2013-07-25T14:53:27.903 回答
17

是的。问题是符号错误。采用:

$this->sendRequest($uri)

反而。或者

self::staticMethod()

对于静态方法。另请阅读此内容以了解 OOP - http://www.php.net/manual/en/language.oop5.basic.php

于 2013-07-26T09:52:45.750 回答
1

您可以使用 调用该方法$this->methodNameYouWantToCall($thing_you_want_to_pass)

在你的情况下,你可以这样......

return $this->sendRequest($uri);
于 2021-11-21T09:29:43.167 回答
-3

要在任何 laravel 版本中调用同一控制器内的函数,如下所示

$role = $this->sendRequest('parameter');
// sendRequest is a public function
于 2021-01-13T09:43:11.770 回答