我在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";
}
}
我想使其可重用,而不是在每个函数中都添加它
答案 0 :(得分:0)
首先,您应该在$this
正文中使用class
。这样可以解决您的Fatal error
。
其次,要在控制器内部使用模型方法,您应该实现外部类(模型),然后可以通过引用->
使用模型的方法,因为它是一个对象。