我误解了php对象引用是如何工作的。据我所知,在php 5中,引用赋值对象是自动的。我理解引用赋值如何适用于非对象。
我想将对象实例的引用从方法传递给调用代码,然后使用实例引用调用该类的方法。
当我尝试这个时,我得到:
致命错误:调用成员函数update_Sessions_For_Schedule() 在......中的非对象上。
我已经阅读了一些类似的SO帖子,但我不能更清楚地找到为什么我无法做到这一点。
所以我拥有的是:
class Schedule使用类Time_Tabler进行检查,可以在允许创建新时间表之前将其添加到时间表中。很明显,在这个过程中,Time_Tabler被实例化了。
我想从实例化调度的php代码访问此实例,然后使用该实例调用方法update_Sessions_For_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的对象,因此可以调用该方法。
欢迎任何想法。
答案 0 :(得分:0)
我已经解决了这个问题。
解决问题的方法一如既往地简单明了。这个实例并没有持续存在,所以当我想再回顾它时它就不存在了。
因此,为了确保实例在引用时仍然存在,我做了一个克隆。