这种八杆子打不到的调用是咋回事?

发布于 2021-11-26 03:16:06 字数 1453 浏览 841 评论 4

在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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

灵芸 2021-12-01 14:55:50

嗯,楼上二位点醒了我。看来能随便撑杆子,我的理解太套套化了。

本王不退位尔等都是臣 2021-12-01 12:01:22

引用来自“wuyiw”的评论

估计是C::t('forum_thread')返回了
table_forum_thread
的一个实例.

拥有 2021-12-01 10:38:23

估计是C::t('forum_thread')返回了
table_forum_thread
的一个实例.

别低头,皇冠会掉 2021-11-26 08:35:43

这问题有点那个啥,不过还是回答一下。

C::t()方法返回一个与数据表相关的数据操作对象,这个对象不一定是C类或其子类。确切的说C::t()中可以写返回任何类型的代码。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文