0

Fatal error: Call to a member function get() on a non-object

pr($transaction->invoice->get());

我收到一条奇怪的消息。我确定该方法存在,并且可以使用,甚至在使用之前仔细检查过。这里有什么问题?

pr(get_class_methods($transaction->invoice));
Array
(
    [0] => __construct
    [1] => get
    [2] => __toString
    [3] => getHref
    [4] => setHref
    [5] => _get
)

更新:

var_dump(is_object($transaction->invoice));评价为bool(true)

这些方法都不起作用。我很混乱!我认为这是那些边缘情况之一。我正在使用 Recurly 库。

更新

看起来有些返回的对象本身没有实例化。这很奇怪。我不知道 PHP 会这样做。

4

1 回答 1

1

你在这里体验的是魔法。由于 Magic 很难理解,因此更难调试。预计 Recurly PHP 库中有很大一部分是基于 Magic 的。

看起来有些返回的对象本身没有实例化。这很奇怪。我不知道 PHP 会这样做。

它不是 PHP,而是库。它为属性使用了魔法 getter 和 setter以及其他魔法材料。他们一定是被某个非常热爱魔法的巫师驱使的。你还没有陶醉吗?

超越魔法的最佳方法是为自己安装一个像Xdebug这样的步进调试器,然后设置断点并直接检查值。所有常见的 PHP IDE 都支持xdebug 远程调试(即使这被称为远程调试,它也可以在您的本地开发机器上工作)。

于 2012-06-30T22:34:46.743 回答