搜索
博主信息
博文 4
粉丝 0
评论 1
访问量 6900
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
ThinkPHP5.1新手笔记(四):【核心知识】控制器
一嗔
原创
493人浏览过

        1、按照ThinkPHP的架构设计,所有的URL请求(无论是否采用了路由),最终都会定位到控制器。


        2、为了更方便使用,控制器类建议继承系统的控制器基类 think\Controller ,有assign、fetch等方法可直接用。不继承的话可以用助手函数,但个人不喜欢助手函数。不继承时打印$this发现是空对象,没有任何方法,继承的话有一堆方法。


        3、如果继承了控制器基类,可以定义控制器初始化方法initialize ,该方法会在调用该控制器的方法之前先执行。如防止重复登陆时可在登陆、注册、找回密码等方法前定义初始化方法(判断session)。另外一种情况:为了禁止不登陆直接进入后台首页、文章页等页面,可以建立Base控制器,并定义初始化方法(判断session),其它控制器继承该控制器。当执行继承该控制器的其它控制器的方法时,都会先运行此初始化方法,没有继承该Base控制器的其它控制器不受影响。这两种情况稍有区别。


        4、一般一个方法对应一个模板,但当模板中有一些按钮等额外操作时,得单独定义方法,如列表页中的删除、激活等操作。建议多使用ajax提交,个人喜欢if判断和fetch模板写在一个方法中,好起名字,也省路由(可以做到一个模板对应一个方法)。其中,success和error跳转会自动判断请求是否是ajax请求,如果是,会给ajax返回数据,而不进行默认跳转。包括 redirect 、 success 和 error 方法在内的url地址参数不需要使用url方法,系统会自动调用url方法,否则会出现重复的url后缀。


        5、控制器主要负责请求的接收,并调用相关的模型处理,并最终通过视图输出。tp认为“严格来说,控制器不应该过多的介入业务逻辑处理”。个人也喜欢下面的方式:控制器只传递数据,与数据库打交道的事全交给模型,控制器方法中的标准三步:接收数据、调用模型处理数据、返回数据给模板。在模型中定义方法:public function add($data),在控制器中调用:$result=model('model')->add($data)即可。建立模板<-->控制器<-->模型<-->验证器的回路。


        6、注意return和echo,var_dump、dump、halt、return json()的区别。return主要是用于返回一个结果,echo用于返回一个字符串。对于非字符串,以后只用halt和var_dump。halt=dump+die;var_dump查看真实数据类型更清楚,dump和halt总是以数组形式返回。对于字符串,return和echo要注意。return有返回的意思,后面代码不执行;echo没有这意思。有的地方只能return,有的地方只能echo。


        7、tpl设置的默认输出文件是html,不是json。json主要是ajax用的。json比XML好用,xml中好多标签,json没有标签,且是js的子集,与js完美配合。   


        8、前置操作,这比初始化方法更灵活。可以用于权限控制。前置方法中只能echo。


        9、跳转的2个模板在thinkphp/tpl/dispatch_jump.tpl,可以在模板中设置相关信息。










本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学