admin

致命错误:不在对象上下文说明中时使用$ this?

sql

我遇到了从未有过的奇怪错误。

致命错误:不在对象上下文中时使用$ this

Chat.php(类)

<?php
class Chat {
private $_data = array(),
        $_db;

public function __construct($row){
    $this->_db = DB::getInstance();
    $this->_data = $row;

}

public function send($fields = array()) {
    $this->_db->insert('messages', $fields); <------- ERROR
 }

当我这样调用send函数时:

Chat::send(array(
'message' => Input::get('message'),
'author' => $user->data()->username,
'ts' => date('Y-m-d H:i:s')
));

错误弹出。


阅读 142

收藏
2021-06-07

共1个答案

admin

您需要使用创建一个对象new,以便有一个$this对象:

$chat = new Chat($row);
$chat->Send(array(
    'message' => Input::get('message'),
    'author' => $user->data()->username,
    'ts' => date('Y-m-d H:i:s')
));

在调用构造函数之前,您不会创建数据库连接,而在new使用构造函数时会发生这种情况。

2021-06-07