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



我在谷歌上搜索了很多次这个错误,但没有解决方案,只有我看到的是,如果它是静态函数,我必须使用self::而不是$this->,但如果它不是静态的,我可以使用$this->我知道,但当我运行PHP文件(在终端中运行:php test.php(来测试添加新员工时,这个错误出现了:

PHP致命错误:未捕获错误:在/var/www/localdomain/phpAssignment/app/services/enemployees.PHP:37 中不在对象上下文中使用$this

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');
}

当我直接在函数中创建新模型时,它可以像一样正常工作

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

test.php包含以下内容:

$employeeData = [
'name' => 'John',
'manager_id' => 2
];
employees::add($employeeData);

我想让它可重复使用,而不是在每个功能中添加它

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

最新更新