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

Router中,为什么要这样做呢?

[复制链接]
发表于 2012-9-14 11:59:45 | 显示全部楼层 |阅读模式
本帖最后由 gaoomei 于 2012-9-14 21:13 编辑
PHP复制代码
 
        /**
         *  Fetch the current method
         *
         * @access        public
         * @return        string
         */

        function fetch_method()
        {
                if ($this->method == $this->fetch_class())
                {
                        return 'index';
                }
 
                return $this->method;
        }
 
复制代码

为什么要这样做呢?我一直不解。
比如,我有个LoginController, indexAction是登录表单,loginAction是处理登录请求。。。
这段代码直接就把login/login 转成了login/index 。。。。
我的版本是:2.1.2,框架本身要求:for PHP 5.1.6 or newer ,所以也就没必要兼容PHP4,那么完全可以用__construct 代替类同名方法了。。那,$this->method == $this->fetch_class()  这句话就没必要了。..

发表于 2012-9-14 22:28:24 CI中国手机版 | 显示全部楼层
构造函数和index方法的用处还是不太一样。来自: iPhone客户端
发表于 2012-9-16 04:45:42 | 显示全部楼层
我也感觉这句话没必要,直接把 controller 类的同名方法替换成 index 了
楼主直接把它去掉后应该也可以跑的吧?
发表于 2012-9-17 00:58:32 | 显示全部楼层
ci的这点处理的不是很好,控制器类和动作名称都直接使用类名和方法名,很多时候会和自己的意愿冲突。
比如Login控制器里的一个login动作,
在ci里我们这样:
PHP复制代码
class Login extends CI_Controller { function login(){……}}
复制代码

然而我们这样做:
PHP复制代码
class LoginController extends CI_Controller { function loginAction(){……}}
复制代码

也就变得更加清晰。当然我们需要扩展CI的几个东西了。
发表于 2012-9-17 11:00:33 | 显示全部楼层
太尉天上飞 发表于 2012-9-17 00:58
ci的这点处理的不是很好,控制器类和动作名称都直接使用类名和方法名,很多时候会和自己的意愿冲突。
比如L ...

我觉得这样太麻烦了。
很多框架都是这样,非得加个 action,完全没有必要,我觉得很啰嗦,呵呵

本版积分规则