2016-11-08 2 views
0

Ich verwende Laravel 5.2 auf PHP 5.5.9Laravel 5 Verfahren nicht in Steuerung nicht vorhanden ist, während verwendet PHP __callStatic Methode

anstelle von Hart Codierverfahren in den folgenden Controller verwenden ich PHP __callStatic Methode Funktionalität dynamisch hinzuzufügen. Es funktioniert gut, während ich von Console versucht, aber während Methoden Route aufrufen, erhalte ich die folgende Fehler

Methode App \ Http \ Controllers \ Showcategory :: neueste() nicht

Hier existiert ist meine Strecke

Route::get('Category/{id}',    '[email protected]'); 

Hier ist mein Controller-

class showCategory extends Controller 
{ 

public $methods = [ 
    'latest'  => 'created_at', 
    'newArrival' => 'created_at', 
    'mostViewed' => 'views' 
]; 

public function get($link_or_id, $orderBy = 'created_at') 
{ 

} 

public static function __callStatic($func, $arg) 
{ 

    $category = new self(); 

    if(array_key_exists($func, $category->methods)) 
    { 

     return $category->get($arg[0], $category->methods[ $func ]); 

    } 

} 

} 

Jede Hilfe zu Punkt, wo ich vermasselt?

+0

Überlegen Sie, ob Laravel Controller-Funktionen aufruft, in Objekt oder statisch gefunden werden muss context – scottevans93

+0

Versuchen Sie 'public static function __callStatic' in' public function __call' zu ändern. – scottevans93

+0

__call funktioniert nicht, da die Methode statisch aufgerufen wird. – ashique

Antwort

0

__callStatic() wird ausgelöst, wenn nicht zugreifbare Methoden in einem statischen Kontext aufgerufen werden.

showCategory :: latest(); es funktioniert

und es logisch, wie Sie neueste Methode in Routen setzen und Sie wissen, ob es oder nicht gefunden wird, wenn Sie in Routen setzen es in Controller

+0

Während ich diese Methode von der Konsole aus anwendete, funktionierte sie wie erwartet, aber nicht von der Route. Ich weiß nicht warum. Das ist die Antwort, die ich versuche herauszufinden. Vielen Dank. – ashique

Verwandte Themen