CI框架学习笔记(一)

辅助函数

顾名思义。就是帮助我们完成特定任务的函数。每个辅助函数文件都是某一类函数的集合。比如,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* 。

在视图文件中使用PHP替代语法

如果不是使用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类

Session(会话)类可以让你保持一个用户的”状态”,并跟踪他在浏览你网站时的活动。

初始化

可以在控制器的构造函数中初始化,也可以在系统中自动加载
$this->load->library(‘session’);

Session如何工作

当页面载入时,Session类就会检查用户的Cookie中是否存在有效的Session数据,如果Session不存在,或者已经过期,就会创建一个新的session并保存起来。

在CLI模式下,Session类将自动关闭,这种做法是基于HTTP协议的

关于并发的注意事项

当不需要使用某个Session变量时,就使用session_write_close()方法来关闭它。

什么是Session数据

Session数据就是一个简单的数组,带有一个特定的session ID。

获取Session数据

通过全局变量 SESSION _SESSION[‘item’]
$this->session->item
其中item是你想获取的数组的价值

添加Session数据

可以简单的讲数据赋值给 SESSION this->session的某个属性的值
如火想检查某个session值是否存在,可以使用isset()

删除Session数据

和其他的变量一样,可以使用unset()方法来删除$_SESSION数组中的某个值

unset($_SESSION['some_name']);

// or multiple values:

unset(
    $_SESSION['some_name'],
    $_SESSION['another_name']
);

Flashdata

它指的是对下一次请求有效的session数据,之后将会被自动清除。
这用于对一次性的信息特别有用,例如错误信息或者状态信息。

Tempdata

它指的是一种带有有效时间的session数据。当它的有效时间已过期,或者在有效时间内被删除,都会被自动删除

销毁Session

要清除当前的session,比如退出登录,可以简单得使用php自带的session_destroy

文件上传

上传文件的处理流程
- 显示一个上传表单
- 提交表单,文件将被上传到指定的目录
- 根据你设置的参数对文件进行校验是否允许上传
- 上传成功后显示成功信息

开发规范

PHP结束标签

所有的 PHP 文件将不使用结束标签,而是以一个空行代替。

文件的命名

类文件的命名必须以大写字母开头,其他文件比如配置文件,视图,一般的骄傲本文件命名全是小写。
类文件的名称必须和类名保持一致。

类的方法的命名

类名必须以大写字母开头,多个单词之间用下划线分割,不要使用驼峰命名法。
类的方法名全部用小写,并且明确指出方法的功能。多个单词之间用下划线分割。

变量的命名

全部小写,下划线分割

注释

DocBlock分割的注释可以被IDE识别

常量

除了需要大写,尽量使用CI已经定义好的常量

对返回值进行比较以及类型转转换

在一些PHP函数失败放回false,一些返回0,这些值在松散类型比较时候和false是相等的,所以当你在条件中使用这些返回值作比较的时候,一定要严格类型比较,确保返回值是你想要的,而不是松散类型的其他值。

if (strpos($str, 'foo') === FALSE)

调试代码

不要再你提交中包含调试代码,就算注释掉了也不行

文件中的空格

PHP起始标签的前面和结束标签的后面都不要留空格,输出是被缓存的。

PHP错误

运行代码时不应该出现任何错误信息,并不是把警告和提示信息关掉来满足这一点,比如不要直接访问一个你没设置过的变量,使用isset()函数判断下。

字符串

字符串使用单引号引起来,当字符串中有变量时使用双引号,并且用大括号将变量包起来。另外,当字符串中有单引号时,也应该使用双引号,这样就不用使用转义符。

'My String'
"My string {$foo}"
"SELECT foo FROM bar WHERE baz = 'bag'"

SQL查询

关键字永远使用大写,考虑到一度性,把长的查询分成多行,最好每行只有一个从句或者子句。

$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");

你可能感兴趣的:(CI框架学习笔记(一))