8CI自动装载资源、公共函数
- 格式:docx
- 大小:19.08 KB
- 文档页数:7
自动装载资源
就是说每次运行时可以自动初始化类库、辅助函数和模型。
下列项目可自动加载:
“libraries”文件夹中的核心类
“helper”文件夹的辅助函数
“config”文件夹中自定义配置文件
“system/language”文件夹中的语言包
“models”文件夹中的模型
要自动装载资源,打开application/config/autoload.php文件将要自动加载的项目添加到autoload数组中。
注意:增加项目到自动装载数组中的时候,不要包括文件扩展名(.php)。
公共函数:
注:本条为本人添加。
公共函数位于system/core/Common.php 文件中,大家可以在这里定义自己的公共函数。
--IT不倒翁
CodeIgniter使用了一些全局定义的函数来完成操作,不需要装载任何库和辅助函数。
is_php(‘version_number’)
判断PHP的版本号,例如:
If(is_php(‘5.3.0’))
{
$str=quoted_printable_encode($str);
}
is_really_writable(‘path/to/file’)
用于判断是否具有写权限,在windows下,只有文件有只读属性才会报告假。
If(if_really_writable(‘file.txt’))
{
echo “I could write to this if I wanted to.”;
}
else
{
echo “File is not writable.”;
}
config_item(‘item_key’)
可以通过config_item()函数取得单个配置信息,但是配置类是访问这些信息的优选方式。
注:此函数获取的是从config直接获取的值,无法缺德配置类set_item()函数变更的值。
show_error(‘message’),show_404(‘page’),log_message(‘
level’,’message’)
set_status_header(code,’text’);
允许手动设置服务器状态头(header)。
例如:
Set_status_header(401);
//将header设置为Unauthorized
remove_invisible_characters($str)
此函数可防止ASCII字符间插入空字符,如Java\0script
html_escape($mixed)
此函数可以方便使用htmlspecialchars()函数,它接受字符串和数组。
有助于防止跨站脚本攻击。
URI路由:
一般来说,URI字符串有和它唯一的对应的控制器(controller)类与方法。
URI的各个部分是如下模式:
/class/function/id/
在一些例子中,可能会想重定向这种关系调用一个不同类或者方法(class/function),而不是与URL对应。
例如:
/product/1/
/product/2/
/product/3/
/product/4/
一般情况下,URL第二部分表示方法名,但是上面的表示一个产品ID;CodeIgniter可以实现,让用户重定向(remap)URI处理程序。
设定自己的路由规则:
路由规则定义在application/config/routes.php中,里面有一个$route的数组,可以让你定义自己的路由规则。
定义可以用2种方式:通配符(wildcards)或者正则表达式(Regular Expressions)
一个典型的通配符路由:
$route[‘product/(:num)’]=”catalog/product_lookup”;
在一个路由中,数组的键包含着被匹配的URI,而数组的值包含着路由被重定向的目的地,在上面例子中,假如product出现在第一部分,而且数字(:num)出现在第二部分,”catalog”类和”product_lookup”方法将被替代使用(即将被重定向)。
可以匹配文字的值或者使用以下2种通配符类型:
:num 将匹配一个只包含数字的segment(段)
:any 将匹配任何字符(可以是多个segment段),可以匹配多个值,如:
$route[‘product/(:any)’]=”catalog/product_lookup/$1/$2/$3/$4/$5”;//将整条url上的每个参数全部传递给catalog控制器下的product_lookup方法。
注意:路由将会按照定义的顺序来运行.高层的路由总是优先于低层的路由.
例子:$route[‘journals’]=”blogs”;
如果URL第一分段(类名)是关键字”journals”那么将重定向到”blogs”类中处理,
$route[‘blog/joe’]=”blog/users/34”;
如果URL的前2个分段式”blog”和”joe”,那么将会重定向到”blogs”类的”users”方法中处理,并将ID”34”设为参数。
$route[‘product/(:any)’]=”catalog/product_lookup”;
当”product”作为URL中第一分段时,无论第二分段是什么都会被重定向到”catalog”类的”product_lookup”方法。
$route[‘product/(:num)’]=”catalog/product_lookup_by_id/$1”;
当”product”作为URL第一分段时,如果第二分段是数字,那么就会被重定向到”catalog”类,”product_lookup_by_id”方法中。
重要提示:不要在前面或后面加"/".
正则表达式:
如果你喜欢使用正则表达式来自定义路由规则,任何有效的正则表达式被允许的,甚至逆向引用。
注意:如果你使用逆向引用请将双反斜线语法替换为美元符语法(\\1 替换为$1).
典型的正则表达式:
同时,可以混合使用通配符和正则表达式。
系统保留的路由
系统会保留两个路由:
第一个为系统默认的路由:
这个路由表明了当URI中不包含要访问的类和控制器信息的(即只访问根目录的
情况,如http://localhost/ci)将要加载哪个控制器。
上例中,系统将加载"welcome" 这个类(控制器)。
你应该保证设置一个默认路由,不然你的首页
将会显示404 错误。
第二个为404页面的路由:
这个路由标识了如果请求的控制器无法访问的时候将加载哪个控制器。
它相当于
覆盖了默认的404错误页面(即提供了自己定义404页面的功能)。
但它不会
影响show_404()这个方法,这个方法依然会加载默认的位于
application/errors/error_404.php的error_404.php页面。