2017-09-07 3 views
1

Ich habe ein Modell mit 2 Funktionen. Nehmen wir an, der Name des Modells lautet Cars. Ich versuche, eine Funktion brand aufzurufen, die ein Array zurückgibt, damit ich es innerhalb der anderen getBrand Funktion verwenden kann.Php Laravel rufen Sie eine Funktion in dem gleichen Modell

public static function getBrand($data) { 
    $brandVariable = $this->brand(); 
    for ($i=1; $i < count($brandVariable) ; $i++) { 
     //do something 
    } 
} 

public static function brand() { 
    $arrayValues = array(
     1 => 'Brand A', 
     2 => 'Brand B', 
    ); 
    return arrayValues; 
} 

Da die Werte in brand Funktion sind, muss ich es in getBrand passieren.

Ich bekomme einen Fehler in der for Schleife. Ich versuchte es in einer anderen Datei (local PHP nicht Laravel) und es funktioniert gut. Aber in Laravel hat es nicht das erwartete Ergebnis.

Antwort

4

Verwenden Cars::brand weil Sie deklarierten Funktionen als statische

public static function getBrand($data=null) { 
    $Cars = new Cars(); 
    $brandVariable = $Cars::brand(); 
    for ($i=1; $i < count($brandVariable) ; $i++) { 
     //do something 
    } 
} 

Live-Demo: https://eval.in/856708

Oder

public static function getBrand($data=null) { 
    $brandVariable = Cars::brand(); 
    for ($i=1; $i < count($brandVariable) ; $i++) { 
     //do something 
    } 
} 

Live-Demo: https://eval.in/856712

2

Sienennend 10 innerhalb einer statischen Funktion und $this ist nicht innerhalb der Methoden verfügbar, die als static deklariert sind.

Da brand als statische Funktion deklariert Sie eine der folgenden Methoden verwenden, kann die Funktion

zu nennen, wenn innerhalb der Klasse

self::brand(); 

oder

static::brand(); 

von außerhalb die Klasse

ClassName::brand(); 
2

die Funktionen sind statisch, so dass Sie

self::brand()

statt

$this->brand()

verwenden sollten
Verwandte Themen