Calling other function in the same controller?

PhpLaravel

Php Problem Overview


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.

Php Solutions


Solution 1 - Php

Try:

return $this->sendRequest($uri);

Since PHP is not a pure Object-Orieneted 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.

Solution 2 - Php

Yes. Problem is in wrong notation. Use:

$this->sendRequest($uri)

Instead. Or

self::staticMethod()

for static methods. Also read this for getting idea of OOP - http://www.php.net/manual/en/language.oop5.basic.php

Solution 3 - Php

You can call the method with $this->methodNameYouWantToCall($thing_you_want_to_pass).

In Your case you can something like this......

return $this->sendRequest($uri);

Solution 4 - Php

To call a function inside a same controller in any laravel version follow as bellow

$role = $this->sendRequest('parameter');
// sendRequest is a public function

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHimmatorsView Question on Stackoverflow
Solution 1 - Phphaim770View Answer on Stackoverflow
Solution 2 - PhpQAreaView Answer on Stackoverflow
Solution 3 - PhpImad UllahView Answer on Stackoverflow
Solution 4 - PhpkitListnerView Answer on Stackoverflow