CI基础知识笔记

1.知识点 $config[‘url_suffix’] = ”;//url后缀 $config[‘enable_query_strings’] = FALSE; $config[‘controller_trigger’] = ‘c’;//类似Thinkphp当中的m,可以传递c=news控制器名 $config[‘function_trigger’] = ‘m’;//类似Thinkphp当中的a,可以传递a=index方法名 $config[‘directory_trigger’] = ‘d’; //一些控制器在controllers目录下的子目录当中需要使用

2.获取交互数据$this->input->post(‘title’);等同于$_POST[‘title’]

3.使用CI类库 //引入表单验证器 $this->load->library(‘form_validation’);//载入多个可以传递数组形式传递 //set_rules() 方法包含三个参数,第一个是输入域的名称,第二个是错误信息的名称,第三个是错误信息的规则 $this->form_validation->set_rules(‘text’, ‘text’, ‘required’); //执行验证,返回boolean值 $this->form_validation->run(); 其中载入类库第二个参数可以传递数组到类的构造函数中(这样类的构造函数必须带有参数) 在自定义的类库中初始化CI资源可以使用$CI=&get_instance();这样就可以$CI->load->helper(‘url’);等等操作 扩展现有类可以参考扩展辅助函数

4.载入视图 $this->load->view(‘name’);//可以载入views目录下后缀是.php的视图文件,一个控制器可以载入多个视图 $this->load->view(‘folder/name’);//载入views目录下的folder目录下的视图 $this->load->view(‘name’, $data);//其中$data可以是数组或者对象(类变量转换成数组元素) $content = $this->load->view(‘name’, $data, true);//这样视图内容就作为字符串返回

5.载入模型 $this->load->model(‘Model_name’);如果在子目录下载入参考视图载入形式 $this->load->model(‘model_name’, ‘my_model’);//第二个参数是对象名 载入的模型不会自动连接数据库,如果需要自动连接可以将第三个参数设置成true,或者传入$config数据库配置 可以配置autoload.php自动加载模型(不建议使用)

6.辅助函数 一般保存在system/helpers或者application/helpers下,一旦使用$this->load->helper(‘name’);载入那么在视图和控制器当中都可以使用 可以是载入多个辅助函数$this->load->helper(array(‘help1′,’help2′,’help3’));一定要在使用前加载 可以配置autoload.php自动加载辅助函数 扩展辅助函数,可以在定义文件$config[‘subclass_prefix’] = ‘MY_’;那么扩展a_helper.php那么就可以使用MY_a_helper.php进行重写

7.适配器 适配器是特殊的类库,存放在system/libraries目录下,命名一个和类名相同的文件夹,文件夹下存放该类, 该文件夹下的子文件夹drivers包含了所有子类,那么可以使用$this->load->driver(‘class_name’);

8.系统核心类 CI启动调用Benchmark,Config,Controller,Exceptions,Hooks,Input,Language,Loader,Log,Output,Router,URI,Utf8 可以将自己写的核心类放在/application/core/Input.php,类名字必须是CI_Input

9.钩子 9.1启用钩子可以修改config,$config[‘enable_hooks’] = TRUE; 定义钩子在config/hooks.php文件中定义例如 $hook[‘pre_controller’] = array( ‘class’ => ‘MyClass’,//如果只是过程函数,这个可以用空 ‘function’=>’function’,//函数名 ‘filepath’=>’hooks’,//文件存放路径 ‘params’=>array(‘filter’,’input’));//参数 如果同一挂钩点有多次引用,可以将挂钩点定义成二位数组即可 9.2挂钩点列表以及说明: pre_system系统执行的早起调用,仅仅在benchmark和hooks类加载完毕的时候,没有执行路由或者其他过程 pre_controller调用你的任何控制器之前调用,此时所用的基础类路由选择和安全性检查都已经完成 post_controller_constructor在控制器实例化之后任何方法调用之前调用 post_controller控制器完全运行之后 display_override在系统执行末尾向web浏览器发送最终页面 cache_override取代output类中的_display_cache函数 post_system最终渲染页面发送到浏览器之后,浏览器接受完最终数据的系统执行末尾调用

10.公共函数 ci使用了一些全局定义的函数,在任何情况下都可以使用 is_php(‘5.2.0’);判断使用的php是否高于5.2.0 is_really_writeable(‘path/to/file’);判断文件是否有写入权限,一般在windows平台才用 set_status_header(code,’text’);手动设置服务器状态头 remove_invisible_characters();//防止在ascii字符之间插入空字符 html_escape();可以防止跨站脚本攻击

11.URI路由 可以定义自己的路由规则,其中可以使用通配符或者正则表达式 11.1通配符 $route[‘product/(:num)’]=’product/show’; 这样可以匹配product是第一个部分,数字是第二部的url都可以定义到product控制器的show方法中 :num表示一个只包含数字 :any表示任何字符,可以匹配多个值,eg:$route[‘product/(:any)’]=’product/list/$1/$2/$3′; 11.2正则路由 $route[‘products/([a-z]+)/(\d+)’] = “$1/id_$2″; 上例中, 类似于 products/shirts/123 的URI 将换成调用 shirts 控制器类的 id_123 方法.

第一个为系统默认的路由$route[‘default_controller’] = ‘welcome’; 第二个为404页面的路由$route[‘404_override’] = ”; 这个路由标识了如果请求的控制器无法访问的时候将加载哪个控制器。 它相当于覆盖了默认的404错误页面(即提供了自己定义404页面的功能)。 但它不会影响show_404()这个方法,这个方法依然会加载默认的位于application/errors/error_404.php的error_404.php页面。

12.错误处理 show_error(‘消息’ [, int $status_code = 500 ] [, string $heading = ‘An Error Was Encountered’]) 这个函数将会使用以下错误模版来显示错误消息: application/errors/error_general.php 可选参数 $status_code 决定在显示错误的同时将会发送哪种 HTTP 状态代码。 可选参数 $heading 决定错误模版h1标签内容。 更多参考:http://codeigniter.org.cn/user_guide/general/errors.html

13.启动缓存 $this->output->cache(n);//其中n是分钟,可以使用1/60表示精确到1s 由于CI存储缓存文件的方式,只有通过 view 文件的输出才能被缓存 在缓存文件产生之前,请确保 application/cache 文件夹可写

14调试程序 激活分析器$this->output->enable_profiler(TRUE); 关闭分析器$this->output->enable_profiler(FALSE); 其中可以在配置文件profiler.php配置启用和禁用的变量,或者使用 $sections = array( ‘config’ => TRUE, ‘queries’ => TRUE ); $this->output->set_profiler_sections($sections);

注意点: 1.类名的首字母应该大写。如果名称由多个词组成,词之间要用下划线分隔,不要使用骆驼命名法。 类中所有其他方法的名称应该完全小写并且名称能明确指明这个函数的用途,最好用动词开头 2.如果你要使用某个子文件夹下的功能,就要保证 URI 的第一个片段是用于描述这个文件夹的 3.如果要在你的任意控制器中使用构造函数的话,那么必须在里面加入下面这行代码parent::__construct(); 4.控制器保留字Controller,CI_Base,_ci_initialize,Default,index 5.函数保留字is_really_writeable(),load_class(),get_config(),config_item(),show_error(),show_404(),log_message(),_exception_handler(),get_instance() 6.变量保留字$config,$mimes,$lang 7.常量ENVIRONMENT,EXT,FCPATH,SELF,BASEPATH,APPPATH,CI_VERSION,FILE_READ_MODE,FILE_WRITE_MODE,DIR_READ_MODE,FOPEN_READ_WRITE等等 8.载入多个视图,只需要在第一个视图传入数据就可以 9.辅助函数中的函数名最好做好命名规范,如果同时加载多个辅助函数文件,且其中有名称相同的函数,会导致 CI 出现空白页问题(也就是 PHP 语法错误)。 10. 对象的实例名永远都是小写的 11.编写路由规则的时候不要在前面或后面加”/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android 研究

Android系统启动——3init.rc解析

init.rc文件是以“块”(section)为单位服务的,,一个“块”(section)可以包含多行。“块”(section)分成两大类:一类称为"动作(ac...

4032
来自专栏代码世界

Django之路由系统

Django的路由系统   URL配置其实就是告诉Django项目你执行代码的路径,本质就是路径和调用的视图函数之间的映射关系表。Django通过这个表,可以把...

3017
来自专栏北京马哥教育

linux bash环境变量简单总结

一.环境变量简介 Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都 是相同的,这个默认环境实际...

3426
来自专栏编程

autoload自动加载机制使用

在PHP开发过程中,如果希望从外部引入一个class,通常会使用include和require方法,去把定义这个class的文件包含进来,但是这样可能会使得在...

22010
来自专栏python3

Django的路由控制

URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于...

3672
来自专栏腾讯IVWEB团队的专栏

nodejs 中错误捕获的一些最佳实践

本文为翻译文章,原文比较长,感觉也有点啰嗦,所以根据个人理解猜测梳理出本文。

6260
来自专栏java一日一条

ava多线程:volatile变量、happens-before关系及内存一致性

请参考来自 Jean-philippe Bempel 的评论。他提到了一个真实因 JVM 优化导致死锁的例子。我尽可能多地写博客的原因之一是一旦自己理解错了,可...

772
来自专栏Jerry的SAP技术分享

使用JavaScript给对象修改注册监听器

我们在开发一些大型前端项目时,会遇到这样一种情况,某个变量上有个字段。我们想知道是哪一段程序修改了这个变量上的字段。比如全局变量window上我们自定义了一个新...

852
来自专栏逸鹏说道

Python3 与 C# 并发编程之~ 进程实战篇

之前说过 Queue:在 Process之间使用没问题,用到 Pool,就使用 Manager().xxx, Value和 Array,就不太一样了:

1674
来自专栏吴生的专栏

谁说深入浅出虚拟机难?现在我让他通俗易懂(JVM)

1:什么是JVM 大家可以想想,JVM 是什么?JVM是用来干什么的?在这里我列出了三个概念,第一个是JVM,第二个是JDK,第三个是JRE。相信大家对这三个不...

3906

扫码关注云+社区

领取腾讯云代金券