在控制器构造函数中初始化模型

时间:2020-03-03 08:59:31

标签: php

我在Google上多次搜索此错误,没有解决方案,只有我看到,如果它是静态函数,则必须使用self::而不是$this->,但是如果它不是静态的,则可以使用{ {1}}我知道,但是当我运行PHP文件(在终端中,我运行:$this->)以测试添加新员工时,出现此错误:

PHP致命错误:未被捕获的错误:/var/www/localdomain/phpAssignment/app/services/employees.php:37

中不在对象上下文中时使用$ this
php test.php

此外,我使用了将从扩展控制器类中获得的这种类型的初始化,并且得到了相同的错误

private $EmployeeModel;

public function __construct()
{
    $this->EmployeeModel = new EmployeeModel();
}
// Add Employee
public function add($data)
{
    if ($this->EmployeeModel->addEmployee($data)) {    // the error with this line
        echo "employee added";
    }
}

当我直接在函数中创建新模型时,它的工作原理如下

public function __construct(){
      $this->userModel = $this->model('EmployeeModel');
    }

test.php包含以下内容:

{
    $EmployeeModel = new EmployeeModel();
    if ($EmployeeModel->addEmployee($data)) {
        echo "employee added";
    }
}

我想使其可重用,而不是在每个函数中都添加它

1 个答案:

答案 0 :(得分:0)

首先,您应该在$this正文中使用class。这样可以解决您的Fatal error。 其次,要在控制器内部使用模型方法,您应该实现外部类(模型),然后可以通过引用->使用模型的方法,因为它是一个对象。

相关问题