顾名思义。就是帮助我们完成特定任务的函数。每个辅助函数文件都是某一类函数的集合。比如,URL辅助函数帮助我们创建链接,表单辅助元素帮助我们创建表单元素。
辅助函数没有使用面向对象的方式来实现,他们是简单的过程式函数,CI默认不会自己加载辅助函数,一旦加载就可以在控制器和视图中全局访问。
一般辅助函数位于system/helpers或者application/helpers目录。
$this->load->helper('url');
//加载多个辅助函数
$this->load->helper(
array('helper1', 'helper2', 'helper3')
);
在视图文件中使用anchor()函数创建一个链接
<?php echo anchor('blog/comments', 'Click Here');?>
“Click Here” 是链接的名称,”blog/comments” 是你希望链接到 controller/method 的 URI* 。
如果不是使用CI多的模板引擎,那么只能在视图文件中使用纯PHP语法。为了精简视图。建议在写控制结构或者echo语句时使用PHP的替代语法。
Echo替代语法
<ul>
<?php foreach ($todo as $item): ?>
<li><?=$item?></li>
<?php endforeach; ?>
</ul>
这里没有任何括号,所有的括号都不被替换成endforeach,类似的有endif,endfor,endforeache,endwhile
要注意一点,每个分支结构的后面都要跟一个冒号,而不是分号(除了最后一个)。
模板解析类可以对视图文件中的伪变量进行简单的替换,可以解析简单的变量和变量标签对
该类有系统自动加载,用途:
1. 为了安全,对输入数据进行预处理
2. 提供一些辅助方法来获取数据并处理
CI提供了几个辅助方法来从POST,GET,COOKIE和SERVER数组中获取数据,我们不需要去检查数据是否存在,可以简单写成
$something = $this->input->post('something');
Session(会话)类可以让你保持一个用户的”状态”,并跟踪他在浏览你网站时的活动。
可以在控制器的构造函数中初始化,也可以在系统中自动加载
$this->load->library(‘session’);
当页面载入时,Session类就会检查用户的Cookie中是否存在有效的Session数据,如果Session不存在,或者已经过期,就会创建一个新的session并保存起来。
在CLI模式下,Session类将自动关闭,这种做法是基于HTTP协议的
当不需要使用某个Session变量时,就使用session_write_close()方法来关闭它。
Session数据就是一个简单的数组,带有一个特定的session ID。
通过全局变量 SESSION全局变量或者这个方法 _SESSION[‘item’]
$this->session->item
其中item是你想获取的数组的价值
可以简单的讲数据赋值给 SESSION数组,或者赋值给 this->session的某个属性的值
如火想检查某个session值是否存在,可以使用isset()
和其他的变量一样,可以使用unset()方法来删除$_SESSION数组中的某个值
unset($_SESSION['some_name']);
// or multiple values:
unset(
$_SESSION['some_name'],
$_SESSION['another_name']
);
它指的是对下一次请求有效的session数据,之后将会被自动清除。
这用于对一次性的信息特别有用,例如错误信息或者状态信息。
它指的是一种带有有效时间的session数据。当它的有效时间已过期,或者在有效时间内被删除,都会被自动删除
要清除当前的session,比如退出登录,可以简单得使用php自带的session_destroy
上传文件的处理流程
- 显示一个上传表单
- 提交表单,文件将被上传到指定的目录
- 根据你设置的参数对文件进行校验是否允许上传
- 上传成功后显示成功信息
所有的 PHP 文件将不使用结束标签,而是以一个空行代替。
类文件的命名必须以大写字母开头,其他文件比如配置文件,视图,一般的骄傲本文件命名全是小写。
类文件的名称必须和类名保持一致。
类名必须以大写字母开头,多个单词之间用下划线分割,不要使用驼峰命名法。
类的方法名全部用小写,并且明确指出方法的功能。多个单词之间用下划线分割。
全部小写,下划线分割
DocBlock分割的注释可以被IDE识别
除了需要大写,尽量使用CI已经定义好的常量
在一些PHP函数失败放回false,一些返回0,这些值在松散类型比较时候和false是相等的,所以当你在条件中使用这些返回值作比较的时候,一定要严格类型比较,确保返回值是你想要的,而不是松散类型的其他值。
if (strpos($str, 'foo') === FALSE)
不要再你提交中包含调试代码,就算注释掉了也不行
PHP起始标签的前面和结束标签的后面都不要留空格,输出是被缓存的。
运行代码时不应该出现任何错误信息,并不是把警告和提示信息关掉来满足这一点,比如不要直接访问一个你没设置过的变量,使用isset()函数判断下。
字符串使用单引号引起来,当字符串中有变量时使用双引号,并且用大括号将变量包起来。另外,当字符串中有单引号时,也应该使用双引号,这样就不用使用转义符。
'My String'
"My string {$foo}"
"SELECT foo FROM bar WHERE baz = 'bag'"
关键字永远使用大写,考虑到一度性,把长的查询分成多行,最好每行只有一个从句或者子句。
$query = $this->db->query("SELECT foo, bar, baz, foofoo, foobar AS raboof, foobaz
FROM exp_pre_email_addresses
WHERE foo != 'oof'
AND baz != 'zab'
ORDER BY foobaz
LIMIT 5, 100");