Вызов другой функции в том же контроллере?
Я использую 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()
Я предполагаю, что это потому, что я неправильно ссылаюсь на функцию, но я не могу найти никаких объяснений, как это сделать.
2 answers
Попробуйте:
return $this->sendRequest($uri);
Поскольку PHP не является чисто объектно-ориентированным языком, он интерпретирует sendRequest()
как попытку вызвать глобально определенную функцию (например, nl2br()
), но поскольку ваша функция является частью класса ("instagramcontroller"), вам нужно использовать $this
, чтобы указать интерпретатору правильное направление.
Да. Проблема в неправильной записи. Использование:
$this->sendRequest($uri)
Вместо этого. Или
self::staticMethod()
Для статических методов. Также прочитайте это, чтобы получить представление об ООП - http://www.php.net/manual/en/language.oop5.basic.php