使用实例变量调用非对象的成员函数

时间:2013-11-16 03:31:17

标签: php oop object count instance

我有以下代码,运行时会返回此错误:

PHP致命错误:在第36行的/classes/User.php中调用非对象的成员函数count()

public function find($user = null) {
    if($user) {
        $field = (is_numeric($user)) ? 'id' : 'email';
        $data = $this->_db->get('*', 'users', array($field, '=', $user));
        if($data->count()) { // This is line 36, the $_db variable is an instance of the DB class
            $this->_data = $data->first();
            return true;
        }
    }
    return false;
}

我错过了什么让$ data不引用对象?

1 个答案:

答案 0 :(得分:0)

这很简单,但解决方案可能不是:$this->_db->get没有返回对象。取决于_db是什么 - 它是一个抽象层吗?一些疯狂的自制东西?只看语法:

$this->_db->get('*', 'users', array($field, '=', $user));

我有点紧张 - 假设它描述了密钥是如何与搜索值分开的,我从来没有见过像这样的数据库层(以及SQL改变=的作用的频率是多少?)我愿意打赌你的数据库层需要一些关注,但这可能是一些编辑。 ;)

可能是它的任何东西,它返回一个错误 - 它(不幸的是)对象库返回FALSE而不是带有错误代码的对象是相当普遍的。它甚至可以返回一个错误字符串。回应那个坏男孩,看看你得到了什么,然后解决导致它的问题。