未定义的函数调用: Laravel 5.1

8

我在控制器中有一个如下所示的私有函数。

private function GetProjects($ProjectStatus) {
    return \App\Models\Project\Project_Model
            ::where('ProjectStatusID', $ProjectStatus)
            ->where('WhoCreatedTheProject', auth()->user()->UserID)->get();
}

下面是使用这个私有函数的操作方法。
public function ClientCancelledProjects() {
    $ProjectStatus = \App\Enumeration\Project\ProjectStatus::Cancelled;         
    $MyProjects = GetProjects($ProjectStatus);
    return view("Project.Client.MyProject", array("Projects" => $MyProjects));
}

以下是运行控制器时出现的错误。

调用未定义的函数 App\Http\Controllers\Project\GetProjects()

有人知道为什么会出现这种情况吗?我正在尝试重复使用一些代码行,因为它们在控制器中被多次编写。

2个回答

27

为了从控制器中的一个函数访问同一控制器中的其他函数,请使用self::

public function ClientCancelledProjects() {
    $ProjectStatus = \App\Enumeration\Project\ProjectStatus::Cancelled;         
    $MyProjects = self::GetProjects($ProjectStatus);
    return view("Project.Client.MyProject", array("Projects" => $MyProjects));
}

注意:Self::(大写)的使用取决于安装的php版本,但对于旧版本,更倾向于使用 self::

请查看此链接了解更多信息:PHP - Self vs $this


10

类内部的函数不是全局函数,因此不能以那种方式调用。你需要使用$this->GetProjects()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接