0

我误解了 php 对象引用是如何工作的。我知道在 php 5 中,对象的引用分配是自动的。我了解引用分配如何适用于非对象。

我想将对象实例的引用从方法传递给调用代码,然后使用实例引用调用该类的方法。

当我尝试这个时,我得到:

致命错误:在...中的非对象上调用成员函数 update_Sessions_For_Schedule()

我已经阅读了许多类似的 SO 帖子,但我没有进一步找到为什么我无法做到这一点。

所以我所拥有的是:

类 Schedule 使用类 Time_Tabler 检查是否可以在允许创建时间表之前将新时间表添加到时间表中。所以很明显在这个过程中 Time_Tabler 被实例化了。

我想从实例化计划的 php 代码访问此实例,然后使用该实例调用方法 update_Sessions_For_Schedule()。

所以我在类 Schedule 中有方法 get_Checked_Time_Table() : -

我已经尝试过两种格式:

使用明确的参考分配:

public function &get_Checked_Time_Table(){
    global $test_Time_Tabler;
    return $test_Time_Tabler;
}

其中 $test_Time_Tabler 在较早的类 Schedule 方法中实例化。

这被称为

    $tested_Time_Table =& $complete_Schedule->get_Checked_Time_Table();

没有明确的参考分配:

public function get_Checked_Time_Table(){
    global $test_Time_Tabler;
    return $test_Time_Tabler;
}

其中 $test_Time_Tabler 在较早的类 Schedule 方法中实例化。

这被称为

$tested_Time_Table = $complete_Schedule->get_Checked_Time_Table();

在任一情况下

$tested_Time_Table->update_Sessions_For_Schedule($update_As_Insert);

产生致命错误。

我不明白为什么引用不被识别为 Time_Tabler 类的对象,因此可以调用该方法。

欢迎任何想法。

4

1 回答 1

0

我已经解决了这个问题。

问题的解决方法一如既往的简单。该实例没有持续存在,所以当我想回顾它时它并不存在。

因此,为了确保实例在引用时仍然存在,我对它进行了克隆。

于 2012-10-04T10:43:55.813 回答