我正在使用Laravel。这是我正在研究的课程:
<?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;
}
}
该行:
return sendRequest($uri);
呈现错误: 调用未定义的函数sendRequest()
我假设是因为我以错误的方式引用该函数,但我找不到任何解释如何去做。
答案 0 :(得分:118)
尝试:
return $this->sendRequest($uri);
由于PHP不是纯粹的Object-Orieneted语言,它将sendRequest()
解释为尝试调用全局定义的函数(例如,就像nl2br()
一样),但由于您的函数是class('InstagramController'),您需要使用$this
将解释器指向正确的方向。
答案 1 :(得分:6)
是。问题是错误的表示法。使用:
$this->sendRequest($uri)
相反。或者
self::staticMethod()
用于静态方法。另请阅读本文以了解OOP - http://www.php.net/manual/en/language.oop5.basic.php
答案 2 :(得分:-1)
要在任何 Laravel 版本中调用同一控制器内的函数,请按照以下步骤操作
$role = $this->sendRequest('parameter');
// sendRequest is a public function