Blogger Information
Blog 4
fans 0
comment 1
visits 4406
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
ThinkPHP5.1新手笔记(四):【核心知识】控制器
一嗔
Original
295 people have browsed it

        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,可以在模板中设置相关信息。










Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post