【问题标题】:Call to undefined function : Laravel 5.1调用未定义函数:Laravel 5.1
【发布时间】:2016-03-30 07:45:42
【问题描述】:

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

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 中多次编写。

【问题讨论】:

    标签: php laravel-5 laravel-5.1


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      要从同一控制器中的函数访问控制器中的函数,请使用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

      【讨论】:

        猜你喜欢
        • 2016-03-14
        • 2016-02-26
        • 1970-01-01
        • 1970-01-01
        • 2016-10-03
        • 2016-01-24
        • 1970-01-01
        • 2020-12-28
        • 2017-06-13
        相关资源
        最近更新 更多