CI基础(二)
2017-12-20 本文已影响0人
yzw12138
- 重映射方法:_remap()
CI中的url中的两端通常是控制器名和方法名,如果我们想改变这种规则就可以使用_reamp方法;该方法可以将ur中的方法名当做参数传入,进行逻辑处理后在确定调用哪个方法;可以实现验证用户登录类型等功能;
//如果访问add1()方法就让其访问edit()方法,否则访问原有方法
public function _remap($method)
{
if ($method === 'add1')
{
$this->edit();
}
else
{
$this->$method();
}
}
- URL辅助函数
- site_url():包含了index.php,以及在配置文件中设置的url_suffix(url后缀,如:.html)参数,直接在括号内添加控制器名/方法名/参数,添加的参数可以是字符串,也可以是数组,将控制器名,方法名,参数添加到数组里进行传递;
- base_url():和site_url()相同,只是不包含index.php和url_suffix参数;
- current_url():返回当前页面完整的url;
- uri_string():返回包含该函数的页面的 URI 分段(只返回控制器名/方法名/参数)
- index_page():返回配置文件中的index_page参数;
- anchor($uri = '', $title = '', $attributes = ''):url链接,三个参数分别是url地址,链接文本和链接属性(字符串或数组)
- 视图文件中创建链接:anchor()
//点击‘跳转’会直接跳转到前面写的url
<?php echo anchor('blog/comments', '跳转');?>
- 我们可以对CI原生的辅助函数和类库进行扩展、替换,还可以创建自定义的辅助函数和类库,但是数据库类不能被扩展和替换。如果在加载类库时,通过第二参数传递一个数组,则该数组会被传递到构造函数中;如果出入参数,你写的构造函数也必须加上参数。
- 通常情况下我们通过$this调用CI中可用的方法,但是$this只能在控制器、模型和视图中使用,如果你想在自己定义的类中使用CodeIgniter类,就必须使用以下方法,该方法是通过引用来传递,并不是创建一个新的对象。
//自定义类中必须用这种方法使用CodeIgniter
$CI =& get_instance();
$CI->load->helper('url');
-
自动加载:
在application/config/autoload.php中配置,支持自动加载的如下:- library核心类库
- helpers辅助函数
- config用户自定义配置文件
- system/language下的语言文件
- models模型类
-
设置自己的路由规则
在config/route.php中配置自己的路由规则:
$route['aaa'] = 'member/add1';
配置完成后,程序中所有用到member/add1路由的地方都可以使用aaa替代,同时通过member/add1也可以继续访问,这样隐藏了自己真实的url;
- 页面缓存
将下面一段代码放在方法的任意一个地方,页面数据就会进行缓存;
//$n便是页面缓存n分钟
$this->output->cache($n);
如果想要删除缓存,可以直接删除方法的这一行代码,但是删除代码后不会立即生效,必须等到缓存过期后才会生效;也可以手动添加代码进行删除:
$this->output->delete_cache();
- 程序分析器
$this->output->enable_profiler(TRUE);
直接在方法最后加上该行代码,当调用此方法时,就会在页面底部显示分析报告;

- 通过CLI方式访问项目
首先打开终端,cd到项目所在目录,输入$ php index.php login index,会和浏览器打开一样,如:在controllers新建login类,添加方法message,方法内容为
<?php
class Login extends CI_Controller {
public function message($to = 'World')
{
echo "Hello {$to}!".PHP_EOL;
}
}
此时输入命令后会直接显示”Hello Word!“