Skip to content
Advertisement

Calling other function in the same controller?

I’ve this controller, and the function read($q) return error 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;
}

}

I’m assuming it’s because I’m referencing the function in the wrong manner, but I can’t find any explanations for how to do it.

Advertisement

Answer

Try:

return $this->sendRequest($uri);

Since PHP is not a pure object-oriented language, it interprets sendRequest() as an attempt to invoke a globally defined function (just like nl2br() for example), but since your function is part of a class (InstagramController), you need to use $this to point the interpreter in the right direction.

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement