用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3065|回复: 9
收起左侧

控制器里的方法能覆盖吗?

[复制链接]
发表于 2009-5-6 10:35:18 | 显示全部楼层 |阅读模式
好像试了不行,上来确认一下.
发表于 2009-5-6 10:53:20 | 显示全部楼层
可以重载,不能覆盖
 楼主| 发表于 2009-5-6 10:58:34 | 显示全部楼层
Model里的方法可以重载吗?我在视图上调用测试的时候,方法的参数个数都是不同的了,但出错.
发表于 2009-5-6 11:01:53 | 显示全部楼层
应该是程序问题吧。
这个和CI没有关系。
 楼主| 发表于 2009-5-6 11:44:28 | 显示全部楼层
你们有试过吗?我的只要重载就出现这样的错误了.
Model里两个方法是
function getArticle($offset,$num)
function getArticle($id)

Fatal error: Cannot redeclare Model_article::getArticle() in

只要我把两个方法名改成不一样,就正常.
 楼主| 发表于 2009-5-6 11:54:09 | 显示全部楼层
可以重载,不能覆盖
sam 发表于 2009-5-6 10:53


http://codeigniter.org.cn/forums/thread-1297-1-1.html

突然搜到以前的一帖关于函数重载,Sam版主也有回复来,但观点似乎是不能重载.
我也是JAVA出身的,所以不大清楚.但好像看PHP书里写到方法是可以重载的.
不知道是什么问题?
发表于 2009-5-6 12:14:52 | 显示全部楼层
我再回答一次:PHP 不支持 C++ 那样的同名函数,参数不同的重载!!!!!!!!
PHP 重载需要一个其它的方式,这个在 PHP 手册里有说明,附上 PHP 手册相关章节:http://www.php.net/manual/en/language.oop5.overloading.php

希望初学 PHP 的朋友多多看 PHP 手册,不要想当然以为 PHP 和其它语言有同样的使用方式。
发表于 2009-5-6 13:09:10 | 显示全部楼层
6# 乌有

ci中函数不能重载,正如hex所说
发表于 2009-5-6 15:01:20 | 显示全部楼层
这是PHP的基础知识。一般动态语言都不会支持重载。这是语言的特性。因为重载需要严的类型来指定。因为动态语言的变量是通过语言的上下文来判别的。
发表于 2009-5-6 15:25:28 | 显示全部楼层
你们有试过吗?我的只要重载就出现这样的错误了.
Model里两个方法是
function getArticle($offset,$num)
function getArticle($id)

Fatal error: Cannot redeclare Model_article::getArticle() in

只要我把两个方 ...
乌有 发表于 2009-5-6 11:44

我囧了,你试过其他php框架可以重载吗?

本版积分规则