我误解了 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 类的对象,因此可以调用该方法。
欢迎任何想法。