这种八杆子打不到的调用是咋回事?
在DZ中有这样的代码
$grids['newthread'] = C::t('forum_thread')->fetch_all_for_guide('newthread', 0, array(), 0, 0, 0, 10, $_G['setting']['grid']['fids']);
其中的C::t();一看就是C类中调用它的一个方法t;但是继续往下就感觉晕了!
->fetch_all_for_guide();
按php语法规则,这个->fetch_all_for_guide();应该是C类中的一个方法才对,或者说它是继承C类的子类中的一个方法也可!但,实事并非如此.
fetch_all_for_guide()方法是class table_forum_thread extends discuz_table类中的一个方法。
此时疑点集中在discuz_table身上,难道它继承了C类不成?
又查了一下class discuz_table extends discuz_base
它根本没有继承C类,又查了一下discuz_base 它也没有继承任何类:abstract class discuz_base
从上面分析可以看出fetch_all_for_guide()不是C类或C类中子类的一个方法,
那么问题来了!!!为啥一个方法不在某类中的,但是此类实例化后却一杆子撑过去调用它了呢了呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
嗯,楼上二位点醒了我。看来能随便撑杆子,我的理解太套套化了。
引用来自“wuyiw”的评论
估计是C::t('forum_thread')返回了
table_forum_thread
的一个实例.
估计是C::t('forum_thread')返回了
table_forum_thread
的一个实例.
这问题有点那个啥,不过还是回答一下。
C::t()方法返回一个与数据表相关的数据操作对象,这个对象不一定是C类或其子类。确切的说C::t()中可以写返回任何类型的代码。