移除URL中的index.php

开启Apache的mod_rewrite模块,在项目目录中新建.htaccess 文件,添加如下内容

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

获取CI超级对象

$CI = & get_instance()
$version_id = $CI->config->item("version_id");

使用辅助函数

一般情况下,辅助函数位于 system/helpers 或者 application/helpers 目录 目录下。
加载 URL 辅助函数 ,它的文件名为 xxx_helper.php

public function use_help()
{//加载单个$this->load->helper('url');//加载辅助函数,单个或多个// 路径:application\helpers\demo_helper.php 和 application\helpers\test_helper.php// $this->load->helper(['demo','test']);echo site_url();echo base_url();
}

扩展辅助函数

要扩展原始的 数组辅助函数 ,首先你要创建一个文件 application/helpers/MY_array_helper.php,然后在文件中添加或重写函数。

https://codeigniter.org.cn/user_guide/general/helpers.html

设置自定义前缀

用于扩展辅助函数的文件名前缀和扩展类库和核心类是一样的。要自定义这个前缀,你可以打开 application/config/config.php 文件然后找到这项:

$config['subclass_prefix'] = 'MY_';

使用codeigniter类库

所有的系统类库都位于 system/libraries/ 目录下,大多数情况下,在使用之前, 你要先在 控制器 中初始化它,使用下面的方法

//加载类库
$this->load->library('encrypt');
//使用加载的类库
$tt  =  $this->encrypt->encode('123','132');

创建自己的类库

自定义的类库文件应该放置在 application/libraries 目录下,当你初始化类时,CodeIgniter 会在这个目录下寻找这些类。
备注:

文件名首字母必须大写,例如:Myclass.php
类名定义首字母必须大写,例如:class Myclass
类名和文件名必须一致

例如

<?php
class Someclass
{public function some_class($data){return md5($data);}
}

使用

public function use_custom_library()
{//创建自定义类库$this->load->library('someclass');echo $this->someclass->some_class(12345);
}

扩展原生类库

要扩展原生的类库,只需要新建一个文件,以MY_开头继承原类库即可,示例:要扩展原Email类库,只需命名为 application/libraries/MY_Email.php , 然后定义你的类

<?php
class MY_Email extends CI_Email
{//
}

替换原生类库

要替换原类库文件,只需定义与原生的类库命名完全一样,例如, 要替换掉原生的 Email 类的话,你要新建一个 application/libraries/Email.php 文件, 然后定义定义你的类:

<?php
class CI_Email
{//
}

更多参考

https://codeigniter.org.cn/user_guide/general/creating_libraries.html

控制器

控制器文件保存到 application/controllers/ 目录下。
控制器命名规则

1.`文件名`必须是大写字母开头,如:'Demo.php' 。
2.`类名`必须以`大写`字母开头。

示例:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');class Welcome extends CI_Controller
{public function index(){$this->load->view('welcome_message');}
}

模型

模型类位于你的 application/models/ 目录下。

模型命名规则

1.类名的第一个字母 必须`大写`,其余部分小写。
2.文件名和类名应该一致。

例如,创建一个Demo_model.php,路径:applicationmodelsDemo_model.php

<?phpclass Demo_model extends CI_Model
{//对应表中的字段public $name;public $age;public $addr;/*** 返回最后两条记录* @return mixed*/public function get_last_two_record(){$query = $this->db->get('demo', 2);return $query->result_array();}/*** 插入记录*/public function insert_record($data){$this->name = $data['name'];$this->age  = $data['age'];$this->addr = $data['addr'];$this->db->insert('demo', $this);}/*** 更新记录*/public function update_record($data){$this->name = $data['name'];$this->age  = $data['age'];$this->addr = $data['addr'];$this->db->update('demo', $this, array('id' => $data['id']));}}

在控制器调用

class demo extends CI_Controller
{public function use_model(){$data = ['name' => 'Daiod','age' => 24,'addr' => 'Chigo',
//            'id' => 8];//加载model$this->load->model('demo_model');
//        $this->load->model('demo/test','demoModel'); //如果model下有子目录,则$this->load->model('xxx/xxx');//给model定义别名$this->load->model('demo_model','demoModel');//调用model中的方法 $this->model_name->method();
//        $res = $this->demo_model->get_last_two_record();$res = $this->demoModel->get_last_two_record();print_r($res);//插入记录
//        $this->demo_model->insert_record($data);//使用demo_model的别名
//        $this->demoModel->insert_record($data);//更新
//        $this->demo_model->update_record($data);}
}

打印日志

修改config.php文件

/*
|--------------------------------------------------------------------------
| Error Logging Threshold
|--------------------------------------------------------------------------
|
| You can enable error logging by setting a threshold over zero. The
| threshold determines what gets logged. Threshold options are:
|
|  0 = Disables logging, Error logging TURNED OFF
|  1 = Error Messages (including PHP errors)
|  2 = Debug Messages
|  3 = Informational Messages
|  4 = All Messages
|
*/
$config['log_threshold'] = 1; //默认为0,这里修改错误级别 error,debug,info

使用

public function log_write()
{//打印日志,与配置文件中设置错误级别对应log_message('error', "this is error messages");log_message('debug', "this is debug messages");log_message('info', "this is debug messages");echo "<br/>";
}

数据库操作

配置

配置文件路径:CodeIgniterapplicationconfigdatabase.php
自动连接,需要修改CodeIgniterapplicationconfigautoload.php文件,

$autoload['libraries'] = array();
//修改为
$autoload['libraries'] = array('database');

手动连接

$this->load->database();

操作

查询

public function select()
{# 获取表中所有记录$query = $this->db->get('demo');//等价于$query = $this->db->query("select * from demo");//返回所有记录的的数组$data = $query->result_array();//返回所有记录的的数组对象$data = $query->result();//条件查询$data = $this->db->select('name', 'addr')->from('demo')->where('name = \'xiaoli\'')  // ->where('id >=', 1)->limit(2)->order_by('age')->get()->result_array();//返回数组//where条件//where(array('name'=>'mary', 'id >'=>'1')); 表示name字段值是mary并且id字段值是1//where('name', 'mary')或where('name =', 'mary'); 表示查询条件是name字段值是mary//row() 只返回一行记录,返回的是一个对象$data = $query->row();#row_array() 只返回一行记录,返回的是一个数组$data = $query->row_array();//num_rows() 返回查询结果行数$data = $query->num_rows();//num_fields() 返回查询请求的字段个数$data = $query->num_fields();//free_result() 释放当前查询所占用的内存并删除关联资源标识$data = $query->free_result();print_r($data);#返回最后运行的查询Sql语句echo $this->db->last_query(); //select * from demo#获取插入的自增Idecho $this->db->insert_id();//写入和更新操作被影响的行数echo $this->db->affected_rows();//返回指定表的总行数echo $this->db->count_all('demo');//输出当前的数据库版本号echo $this->db->version();//输出当前的数据库平台echo $this->db->platform(); //mysqli//查询语句$this->db->select('column1','column2'); //选择查询的字段$this->db->get('table_name'); //表示SELECT * FROM table_name$this->db->get('table_name', 10, 20); //参数2表示每页记录数(limit),参数3表示偏移(offset),SELECT * FROM table_name LIMIT 20, 10$this->db->select_max();//可接受两个参数,参数2表示别名$this->db->select_min();//同上$this->db->select_avg();//同上$this->db->select_sum();//同上$this->db->from('table_name');//选择表名$this->db->join('table2','table2.pid=table.id','left');//$this->db->from('table1');$this->db->get_where();//示例$this->db->get_where('table_name', array('id' => $id), $limit, $offset);$this->db->where('字段','值');// where 字段 = '值';或者where('id >',2);$this->db->or_where();//子句OR 连接$this->db->where_in('xx',['xx','xx']);// where_in('username',['Joe','Lucy','Lily']);$this->db->or_where_in('xx',['xx','xx']);$this->db->where_not_in();$this->db->or_where_not_in();$this->db->like('title','match');// where title like '%match%';参数3表示before(%match),after(match%),none(match)默认为both//示例$array = array('title' => $match, 'page1' => $match, 'page2' => $match);$this->db->like($array);// WHERE title LIKE '%match%' AND page1 LIKE '%match%' AND page2 LIKE '%match%'$this->db->or_like(); //OR连接$this->db->not_like();$this->db->or_not_like();$this->db->group_by();$this->db->distinct();$this->db->having();$this->db->or_having();$this->db->order_by();$this->db->limit();$this->db->count_all_results();}

插入

public function add()
{//插入数据,被插入的数据会被自动转换和过滤,例如:$data = array('name' => "xiaoming", 'age' => 23, 'addr' => 'chognqing');$this->db->insert('demo', $data);//insert_batch()插入多条,$data为二维数组
}

更新

    public function update(){
//        $data = array('name' => 'xiaoming', 'age' => 26, 'addr' => 'shanghai');
//        $where = "name = 'xiaoming'";
//        $this->db->update('demo', $data, $where);//demo为表名//或者
//        $this->db->where('id', 6);
//        $this->db->update('demo', $data);//或者 $this->db->set('key','value');$data = ['name' => 'nihao'];$bool = $this->db->update('demo', $data, ['id' => 3]); //update_batch()//修改id为3的记录name修改为nihaovar_dump($bool);//成功则返回TURE}

删除

    public function del(){
//        $this->db->where('id', 6);
//        $this->db->delete('demo');//等价于$bool = $this->db->delete('demo',array('id'=>5));//返回布尔值}

PHP使用CodeIgniter笔记相关推荐

  1. CodeIgniter笔记3

    2019独角兽企业重金招聘Python工程师标准>>> Cookie Helper 装载这个 helper,这个 helper 可以通过下面的方法来装载: $this->loa ...

  2. CodeIgniter笔记4

    2019独角兽企业重金招聘Python工程师标准>>> 自动连接数据库 在使用数据库之前,我们最好将数据库进行自动连接:config/autoload.php自动加载 $autolo ...

  3. CI框架源码阅读笔记4 引导文件CodeIgniter.php

    到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http:// ...

  4. Codeigniter入门学习笔记02—View

    很久很久以前学习Codeigniter的笔记记录,很随意,但都是自己记录的,希望对需要的人有所帮助. 本文使用word2013编辑并发布 Postbird | There I am , in the ...

  5. Codeigniter 3.1.11笔记(1)

    前言:纯粹个人笔记,好记性比不上个烂笔头 1.安装wamp+下载codeigniter 3.X 2.welcome controler, welcome message view 3.views/Pa ...

  6. CodeIgniter学习笔记一

    2019独角兽企业重金招聘Python工程师标准>>> controller示例: 在application\controller下创建hello.php hello.php代码 & ...

  7. codeigniter详细笔记

    下载解压后把整个目录(假设目录名为cidemo)放到web site里(假设放入root目录下)即可. check if it works at http://localhost/cidemo/ind ...

  8. Codeigniter 4.0-dev 版源码学习笔记之六——控制器

    前言 其实一开始我是很纠结是否要写控制器的源码分析的,因为控制器的源码太少了,少到你不相信这是一个 MVC 里的一个重头.直觉里,大家都觉得控制器作为各个请求的"入口",其后端应该 ...

  9. Codeigniter 4.0-dev 版源码学习笔记之四——详细路由过程

    前言 我个人觉得在当前 MVC 流行的架构下,要想去了解一个框架,或者是一个基于此架构下的应用程序,最好的入手方式就是先看路由,虽然路由不是 MVC 里的任何一个,但是知道了路由的来龙去脉就知道了整个 ...

最新文章

  1. Android AdapterView 源码分析以及其相关回收机制的分析
  2. POI 使用替换字符方式进行模板生成word
  3. 大学物理实验试卷1到8_物理实验在绝对的“理论”面前就是“纸老虎”
  4. [网络流24题] 航空路线问题 (费用流)
  5. 前端学习(1477):计算属性文档分析
  6. AJAX Control Toolkit 控件学习(转自csdn山巅)
  7. java练习(数组工具类的封装)[目前写过最长的代码,虽然不难]
  8. [Vue.js]实战 -- 电商项目(七)
  9. 剑指OFFER之数组中出现次数超过一半的数字(九度OJ1370)
  10. 安卓学习笔记39:浏览网页、网页与安卓通信
  11. asp.net core mvc视频A:笔记2-4.ActionResult(动作结果,即返回值)
  12. jsf el 表达式_JSF表达式语言– JSF EL
  13. 光驱是DVD,而系统却显示为CD驱动器的原因
  14. php怎么生成缩略图,php怎么生成缩略图
  15. 利用finalshell连接腾讯云服务器linux系统记录
  16. Oracle日期类型转long类型
  17. python抢课_python实现强智科技教务系统抢课(两种方法)
  18. linux下的lib文件
  19. Reprint:大牛讲解信号与系统和数字信号处理;
  20. 【服务器数据恢复】重装系统导致分区无法访问的数据恢复案例

热门文章

  1. Tomcat pool 发布脚本
  2. 李洪强iOS经典面试题156 - Runtime详解(面试必备)
  3. Python 父目录获取
  4. tar.xz文件怎样解压
  5. FastDFS介绍与安装配置
  6. 使用 MacBook Pro 的硬件重置功能解决故障
  7. jquery mobile 技巧总结
  8. 在App中获得MainFrame指针
  9. 转贴一篇不错的Python入门教程 - Instant Hacking[译文]
  10. 送出15个Google Wave邀请,需要的赶快