0

我正在尝试转换一个包含 rethinkdb 日期时间对象(由PHP-RQL 库提供)的对象,但我收到一个致命错误:

Using $this when not in object context

这是代码的概述:

$day = new stdClass;

$datetime = new DateTime();
$arrival = r\time(
    $datetime->format('Y'),
    $datetime->format('m'),
    $datetime->format('d'),
    $datetime->format('H'),
    $datetime->format('i'),
    $datetime->format('s'),
    'Z'
);

$day->arrival = $arrival;

$day = object_to_array($day);

object_to_array()函数中我得到了致命错误,它的代码是:

function object_to_array($obj) {
    $array  = array(); // noisy $array does not exist
    $arrObj = is_object($obj) ? get_object_vars($obj) : $obj;
    foreach ($arrObj as $key => $val) {
        $val = (is_array($val) || is_object($val)) ? $this->getArray($val) : $val;
        $array[$key] = $val;
    }
    return $array;
}

我不记得我从哪里得到这个功能(它不是我的),但它在过去对我很有帮助。

基本上我的问题是为什么这个object_to_array功能会失败?

这是 r\time 函数返回的内容(一个对象):https ://gist.github.com/fenfe1/6676924

注意:仅将时间对象转换为数组可以正常工作,但传递包含时间的对象会失败。

最终,我需要得到一个用于另一个函数的数组,并且由于其他属性将添加到day对象中,因此将其保留为对象将是有益的。

4

1 回答 1

2

错误信息

不在对象上下文中时使用 $this

已经告诉你函数失败的原因。你使用 $this。$this 通常在类中用作对实例化对象的引用,但在您的情况下,您使用的是一个简单的函数,因此没有对象上下文。

于 2013-09-23T21:20:15.193 回答