Php Laravel在同一模型中调用一个函数

Rey*_*nte 2 php laravel laravel-5

我有一个有2个功能的模型.让我们说模型的名字是Cars.我试图调用一个brand返回数组的函数,以便我可以在其他getBrand函数中使用它.

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;
}
Run Code Online (Sandbox Code Playgroud)

由于值是在brand函数中,我需要将其传递到内部getBrand.

我在for循环中遇到错误.我尝试了另一个文件(本地PHP而不是Laravel),它运行正常.但在Laravel,它没有得到预期的结果.

Nik*_*aut 5

使用Cars::brand是因为您将函数声明为静态

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

现场演示:https://eval.in/856708

要么

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

现场演示:https://eval.in/856712


cha*_*fdo 5

您正在brand静态函数内部调用,并且$this在声明为 的方法内部不可用static

由于brand被声明为静态函数,您可以使用以下方法之一来调用该函数

如果在班级内

self::brand();
Run Code Online (Sandbox Code Playgroud)

或者

static::brand();
Run Code Online (Sandbox Code Playgroud)

来自课堂外

ClassName::brand();
Run Code Online (Sandbox Code Playgroud)