1

如何配置默认控制器?如果不设置,默认方法是哪个?

  • 目录 application/config/routes.php 中配置
$route['default_controller'] = 'home';
$route['default_controller'] = 'home/add';
  • 默认方法
无法设置默认方法,要不就在url指定m参数,要不就是不指定m参数
如果不设置m参数,默认方法是index()

如何载入视图?

$this->load->view('home');
$this->load->view('index/home'); //视图用文件夹区分的话,必须带上文件夹名称
  • 如果视图文件不是.php,那么需要写上后缀名如下
$this->load->view('home.html');
  • 视图公共部分如何载入
$this->load->view('head');
$this->load->view('home');
$this->load->view('foot');
更加优雅地引入公共视图
在home.php引入
<?php $this->load->view('head'); ?>
code-code
<?php $this->load->view('foot'); ?>

如何载入模型?载入后如何使用模型?

  • 手动载入
$this->load->model('user'); //载入User模型
第二参数:模型别名 string
第三参数:是否自动连接数据库 bool (数据库连接一般放在自动连接配置中)
  • 自动载入
在application/config/autoload.php中,修改如下:
$autoload['model'] = array('user'); //载入User模型
  • 模型使用
$this->model_name->method();

推荐使用原生PHP来替代模板引擎

  • 输出变量
<?php echo $variable; ?>
  • 流程控制:分支
//if

<?php if (): ?>
// code
<?php elseif (): ?>
// code
<?php else: ?>
// code
<?php endif; ?>

//switch

<?php switch ():?>
<?php case :?>
// code
<?php break;?>
<?php case :?>
// code
<?php break;?>
<?php default:?>
// code
<?php endswitch;?>
  • 流程控制:循环
//while(注意,没有 do…while 的语法)

<?php while ():?>
// code
<?php endwhile;?>

//for

<?php for ():?>
// code
<?php endfor;?>

//foreach

<?php foreach (): ?>
// code
<?php endforeach; ?>

辅助函数如何导入?辅助函数的优先级

  • 手工导入
$this->load->helper('url');
  • 自动导入
application/config/autoload.php 中添加 $autoload['helper'] = array('url');
  • 辅组函数优先级
application 下的自定义辅组函数 优先于 system下的辅助函数

如何安全获取输入?

  • 获取 GET 参数
$param = $this->input->get('key',TRUE) // XSS filter
$param = $this->input->get('key',FALSE) // NO XSS filter
如果请求的数据不存在,则返回 NULL (下面方法也一样)
  • 获取 POST 参数
$param = $this->input->post('key')
  • 获取 PUT、DELETE、PATCH 参数
$param = $this->input->raw_input_stream;

$param = $this->input->input_stream('key', TRUE); // XSS Clean
$param = $this->input->input_stream('key', FALSE); // No XSS filter

  • 获取 COOKIE 参数
$param = $this->input->cookie('some_cookie', TRUE); // with XSS filter
  • 获取 SERVER 参数
$param = $this->input->server('some_data'); //获取$_SERVER数据
  • 获取 PATHINFO 参数
$product_id = $this->uri->segment(3, 0); //获取第三个片段数据,如果没有默认0

怎样数据验证?验证不通过该如何处理?

  • 加载表单验证类
 $this->load->library('form_validation');
  • 设置验证规则
$this->form_validation->set_rules('email', 'Email', 'required');
  • 执行验证
$ret = $this->form_validation->run(); //成功返回True,否则返回false
  • 表单辅助函数
$this->load->helper('form');
然后在视图中可以输入如下代码:
<input type="text" name="title" value="<?php echo set_value('title') ?>" />
<?php echo form_error('title') ?>

如何重写URL? 如何设置伪静态?

  • 重写URL -- 隐藏index.php
//以apache为例
开启mod_rewrite模块
把对应的目录AllowOverride设为All
在根目录下新建.htaccess文件

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
必须在config中找到config['index_page'] = ''
  • 伪静态 -- url后面补充.html
必须在config中找到config['url_suffix'] = '.html'

如何开启调试模式?如何开启页面缓存?

  • 开启调试
$this->output->enable_profiler(TRUE);
$this->output->enable_profiler(FALSE); //禁用
  • 开启页面缓存
$this->output->cache($n); //在控制器中调用

系统核心类如何替换与扩展?

系统核心类位于:system/core/
注意:系统核心类只可以替换扩展不能创建新的
  • 替换
// 文件位于目录 application/core
// 类名要与核心类名一样 CI_开头
// 文件名要与系统核心文件名一样 例如:Input.php
class CI_Input {

}
  • 扩展
// 文件位于目录 application/core
// 类名和文件名必须以 MY_ 开头。(这是可配置的) 例如:MY_Input.php
// 类必须继承自父类
class MY_Input extends CI_Input {

}

系统类库有哪几种? 不同类型的类库如何加载使用?

  • 有2种
1、普通类库文件 位于system/libraries
2、驱动器 位于system/libraries/驱动器目录
  • 加载普通类库文件
$this->load->library('class_name');
  • 加载驱动器
$this->load->driver('class_name');

类库文件如何创建自己类库? 如何替换和扩展系统类库?

  • 创建自己类库
//在application/libraries目录下,创建自己的类库文件
class Someclass {

    public function some_method()
    {
    
    }
}
  • 替换系统类库
//在application/libraries目录下,创建与系统类库文件同名的类库文件 例如:
//application/libraries/Email.php 文件
class CI_Email {

}
  • 扩展系统类库
//在application/libraries目录下,你的新类名和文件名必须以 MY_ 为前缀 例如:
//application/libraries/MY_Email.php 文件
//类在定义时必须继承自父类
class MY_Email extends CI_Email {

}

104828720
1.4k 声望222 粉丝

编程其实很枯燥,所以一定要有追求。