MY_Controller如何在CodeIgniter中使用

  介绍

这期内容当中小编将会给大家带来有关MY_Controller如何在CodeIgniter中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

CodeIgniter所有的控制器都必须继承CI_Controller类,但CI_Controller类位于系统目录下,不太方便修改。为方便做一些公用的处理,通常情况下我们会在核心下创建MY_Controller,用来继承CI_Controller,从而项目中所有的控制器继承MY_Controller。

<强>那么,MY_Controller通常会做些什么呢?

所有的控制器都继承了MY_Controller, MY_Controller常常会加载一些公用帮助函数,公用类库,以及实现一些公用的方法。

公用的方法?公有的方法?

看到这些方法会意识到一个问题,如果方法是公共的,那是否可以通过浏览器访问到。答案是可以的! <强>这样不该让用户访问到的方法让用户访问到了。那设置保护吧

<强>备注:CI_Controller中写公开方法不会被访问到,框架限制了CI_Controller中方法通过浏览器访问。

随着项目的不断进展,MY_Controller中的公用方法会越来越多。如果此时要增加后台管理的功能,所有的控制器依然继承MY_Controller,那其中的很多方法可能不适用了。如果后台需要的一些公用方法也写在这里,这里将会变得混乱。

<>强如何按模块区分不同的控制器?

有两种处理的方式,第一种是通过不同的公用控制器文件来区分,由控制器去决定继承哪一个公用控制器,当然这里得引入公用文件。还有这种方式是可以通过对象的一个属性来维护,不同的模块赋予该属性不同的对象。如:

& lt; ? php    if (定义,! (& # 39;BASEPATH& # 39;))   退出才能(& # 39;No  direct  script  access 允许# 39;);   class  MY_Controller  extends  CI_Controller   {   ,public  function  __construct ($ type =, NULL)   ,{   ,,父母:__construct ();   ,,开关(类型),{   ,,,case  & # 39; api # 39;,:   ,,,,这个→美元负载→库(& # 39;api_helper& # 39;,,空,,& # 39;辅助# 39;);   ,,,,休息;   ,,,case  & # 39;行政与# 39;,:   ,,,,这个→美元负载→库(& # 39;admin_helper& # 39;,,空,,& # 39;辅助# 39;);   ,,,,,休息;   ,,,default :   ,,,,这个→美元负载→库(& # 39;app_helper& # 39;,,空,,& # 39;辅助# 39;);   ,,,,,休息   ,,}   ,}   }/*,最终获得of  file  MY_Controller.php  *//*,地点:,。/应用程序/核心/MY_Controller.php  */

控制器调用MY_Controller构造函数并传入类型值,根据不同的类型值会加载不同的类库,然后给类定义一个统一的别名,方便处理。具体的图书馆可以处理该模块公用的方法或负载公用的资源,相当于该模块的一个公用类。当然处理方式也可以是直接通过路由中的目录名或者控制器名称来控制等等。

这样避免了加载不同的文件,调用方法时只需要通过$ this→辅助对象调用。在仔细看看,可以发现不同模块的公用类是放在图书馆中,放在图书馆或助手中都可以使用get_intance获取控制器对象,但每次使用都需要获取实例,相对麻烦,如果是模型呢?感觉也不太好。其中的公用方法有一些会跟业务逻辑相关,放在图书馆感觉不太合适。

业务逻辑好像并没有一个好的地方去实现,控制器的私有方法?模型?

<强>先总结下上面的处理方法:

1,不同模块之间可以按需加载以及实现自定义的公用方法,各个模块之间互不影响。如果各模块之间的公用方法比较多,也可以再去继承一个公用的类。

2,公用方法放在图书馆中,调用CI实例不方便。

3,如果不喜欢$ this→herlper的调用方法,可以让控制器去继承不同的公用控制器,思路是一样的,只是可能需要手动引入文件。

上述就是小编为大家分享的MY_Controller如何在CodeIgniter中使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

MY_Controller如何在CodeIgniter中使用