在同一个控制器中调用其他功能?

Him*_*ors 56 php laravel

我正在使用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;
}

}
Run Code Online (Sandbox Code Playgroud)

这条线:

<?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;
}

}
Run Code Online (Sandbox Code Playgroud)

呈现错误:调用未定义的函数sendRequest()

我假设它是因为我以错误的方式引用该函数,但我找不到任何解释如何做到这一点.

hai*_*770 130

尝试:

return $this->sendRequest($uri);
Run Code Online (Sandbox Code Playgroud)

由于PHP不是纯粹的Object-Orieneted语言,它将其解释sendRequest()为尝试调用全局定义的函数(就像nl2br()例如),但由于您的函数是类的一部分('InstagramController'),您需要使用$this指向翻译方向正确.

  • PHP将`sendRequest`解释为尝试调用全局定义的函数(例如,就像`nl2br()`),但是由于你在`class`('InstagramController')中定义了`function`,你需要使用`$ this`指向解释器正确的方向. (7认同)

QAr*_*rea 8

是.问题是错误的表示法.使用:

$this->sendRequest($uri)
Run Code Online (Sandbox Code Playgroud)

代替.要么

self::staticMethod()
Run Code Online (Sandbox Code Playgroud)

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