调用未定义的函数:Laravel 5.1

时间:2015-12-23 20:15:36

标签: php laravel-5 laravel-5.1

我在控制器中有如下所示的私人功能。

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()

有人知道为什么会这样吗?我试图重用一些代码行,因为它们在Controller中被多次写入。

2 个答案:

答案 0 :(得分:11)

要从同一控制器中的函数访问控制器中的函数,请使用public function ClientCancelledProjects() { $ProjectStatus = \App\Enumeration\Project\ProjectStatus::Cancelled; $MyProjects = self::GetProjects($ProjectStatus); return view("Project.Client.MyProject", array("Projects" => $MyProjects)); }

Self::

注意:php(大写)可以使用,具体取决于安装的self::版本,但对于旧版本,DefaultHttpRequestParser是首选。

请查看此链接以获取更多信息:PHP - Self vs $this

答案 1 :(得分:4)

类中的函数不是全局函数,不能以这种方式调用。您需要改为使用$this->GetProjects()