我在谷歌上搜索了很多次这个错误,但没有解决方案,只有我看到的是,如果它是静态函数,我必须使用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(,然后您可以通过引用->
来使用模型的方法,因为它是一个对象。