Aufrufen einer anderen Funktion im selben Controller?

Lesezeit: 3 Minuten

Benutzer-Avatar
Himmatoren

Ich habe diesen Controller und die function read($q) Fehler zurückgeben 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("https://stackoverflow.com/", '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;
}

}

Ich gehe davon aus, dass es daran liegt, dass ich auf die Funktion falsch verweise, aber ich kann keine Erklärungen dafür finden, wie das geht.

  • Wahrscheinlich möchten Sie sendRequest geschützt machen.

    – Alexander Cogneau

    25. Juli 2013 um 15:00 Uhr

  • Wenn Sie eine Member-Var in PHP aufrufen, tun Sie dies mit $this-> . Und in Ihrer Funktion read rufen Sie die Funktion sendRequest ohne $this auf. Versuchen Sie: return $this->sendRequest($url);

    – Maik Lowrey

    13. Januar 2021 um 9:56 Uhr

Benutzer-Avatar
haim770

Versuchen:

return $this->sendRequest($uri);

Da PHP keine reine objektorientierte Sprache ist, interpretiert es sendRequest() als Versuch, eine global definierte Funktion aufzurufen (genau wie nl2br() zum Beispiel), aber da Ihre Funktion Teil einer Klasse ist (InstagramController), müssen Sie verwenden $this um den Dolmetscher in die richtige Richtung zu weisen.

  • @ KristofferNolgren Ich schlage vor, Sie lesen mehr über OOP. $this bezieht sich auf das aktuelle InstagramController-Objekt, das die Methode sendRequest() enthält.

    – Blauer Genie

    25. Juli 2013 um 15:02 Uhr

  • Becous sendRequest() ist eine Funktion innerhalb der Klasse. Es ist die grundlegende Verwendung in PHP. Lesen Sie mehr über class.

    – Maciej A. Czyzewski

    25. Juli 2013 um 15:02 Uhr


  • PHP interpretiert sendRequest als Versuch, eine global definierte Funktion aufzurufen (genau wie nl2br() zum Beispiel), aber da Sie Ihre definiert haben function innerhalb von a class (‘InstagramController’), müssen Sie verwenden $this um den Dolmetscher in die richtige Richtung zu weisen.

    – haim770

    25. Juli 2013 um 15:09 Uhr

  • PHP unterscheidet sich von C oder Java, wo Sie Ihren ursprünglichen Beitrag verwenden würden. Ich denke, Sie gehen davon aus, dass es genauso funktioniert, weil die Sprache/Syntax in vielerlei Hinsicht ähnlich aussieht.

    – Benutzer985366

    11. März 2016 um 13:12 Uhr


  • Hat gut funktioniert! Aber wie verkette ich die Ausgaben von zwei Funktionen? Ich habe versucht, Inhalte von anzuzeigen getTitle und getContent auf die folgende Weise: return $this->getTitle() . $this->getContent() innerhalb einer anderen aufgerufenen Funktion getContent() was mir Fehler gab.

    – Subrata Sarkar

    25. Oktober 2016 um 16:17 Uhr


Benutzer-Avatar
QBereich

Ja. Problem liegt in falscher Notation. Verwenden:

$this->sendRequest($uri)

Stattdessen. Oder

self::staticMethod()

für statische Methoden. Lesen Sie dies auch, um sich ein Bild von OOP zu machen – http://www.php.net/manual/en/language.oop5.basic.php

Sie können die Methode mit aufrufen $this->methodNameYouWantToCall($thing_you_want_to_pass).

In Ihrem Fall können Sie so etwas …

return $this->sendRequest($uri);

Um eine Funktion innerhalb desselben Controllers in einer beliebigen Laravel-Version aufzurufen, gehen Sie wie folgt vor

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

1351430cookie-checkAufrufen einer anderen Funktion im selben Controller?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy