如果父类是包含的,在子类前包含静态调用子类方法,会报类不存在

ashchen 2011-09-05 11:48:45
如果父类在一个文件里,不会报错

require 'class.php' class p {function show() {echo 1}}

require 'call.php' "son::show();"

class son extends p {}
这会报错
——————————————————
如果把 不包含调用直接写进来不会报错

按理说不论函数或方法的定义放在调用前还是后,都不应该出错

但如果父类和调用都是包含进来的,而且子类在调用之前,却会报错
...全文
134 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ashchen 2011-09-05
  • 打赏
  • 举报
回复
son类的定义在它后面而已
xuzuning 2011-09-05
  • 打赏
  • 举报
回复
按理说不论函数或方法的定义放在调用前还是后,都不应该出错

此话一点都不错。
但是你的 call.php 中
只有 son::show();
而没有 son 类的定义,这难道会不报错吗?
ashchen 2011-09-05
  • 打赏
  • 举报
回复
基类不管怎么require都是没问题的,什么顺序都行

感觉子类的解析级别要比类和函数都低,而且不能跨require,如果跨文件,就要注意顺序
ohmygirl 2011-09-05
  • 打赏
  • 举报
回复
按理说不论函数或方法的定义放在调用前还是后,都不应该出错


对于函数来说是这样的,但是对于类呢?先实例化一个类,然后在代码的最后把类包含进来,这样会报类不存在么?你自己测试。
ashchen 2011-09-05
  • 打赏
  • 举报
回复
如果 父类,子类,静态调用子类方法 都在同同一个文件里,那么只有下列顺序会报错:

静态调用子类方法
子类
父类

其他顺序不会报错
ashchen 2011-09-05
  • 打赏
  • 举报
回复
又测试了一下:

如果子类和调用分别处在不同的文件里,在包含子类之前调用也会报子类不存在

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧