调用未定义的函数:Laravel 5.1

7 php laravel-5 laravel-5.1

我在Controller中有一个私有函数,如下所示.

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

下面是使用此私有函数的操作方法.

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

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

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

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

Tim*_*wis 15

要从同一控制器中的函数访问控制器中的函数,请使用self:::

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

注意:( Self::大写)将根据php安装的版本工作,但对于旧版本,self::是首选.

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


ayn*_*ber 7

类内的函数不是全局函数,不能那样调用。你需要$this->GetProjects()改用。