韦德国际1946英国 > 计算机网络 > PHP中CODEIGNITER开发框架入门教程,CI框架浅析

原标题:PHP中CODEIGNITER开发框架入门教程,CI框架浅析

浏览次数:139 时间:2019-05-06

 

例1:
$fields = $this->db->field_data(‘table_name’);
foreach ($fields as $field)
{
echo $field->name;
echo $field->type;
echo $field->max_length;
echo $field->primary_key;
}
例2:
$query = $this->db->query(“YOUR QUERY”);
$fields = $query->field_data();
壹③、调用自定义函数
$this->db->call_function(‘没有mysql_前缀的函数名’[,'函数的参数1','参数2','参数 三',...]); 允许你用二个独门的办法来调用一些 CodeIgniter 中一直不定义的PHP数据库函数. 你不能够不提供1个从未 mysql_ 前缀的函数名来作为第三个参数, 那几个前缀会依据当下正值使用的数据库类型来自动增添。任何你需求加上的其余参数都放在第二个参数前边。
经常意况下, 你会须要提供三个 connection ID 或是3个 result ID, connection ID 能够那样来博取:
$this->db->conn_id;
result ID 则带有在三个结实集(result object)中, 你能够这么来获得它:
$query = $this->db->query(“SOME QUERY”);
$query->result_id;
14、数据库缓存
唯有 读类型(read-type) (SELECT) 查询会被缓存,因为唯有那种查询会时有产生结果集。并且下列形式无法和缓存搭配使用:
num_fields() 、field_names() 、field_data() 、free_result()
激活缓存的步子:
㈠创立缓存目录;
㈡在文书 application/config/database.php 中装置缓存目录;
㈢激活缓存特性,能够在文书 application/config/database.php 中设置全局选项,也足以用下边包车型地铁秘诀手动设置。
$this->db->cache_on() 开启缓存
$this->db->cache_off() 关闭缓存
管理您的缓存文件
缓存系统会在缓存存放目录中创设与被访问的U中华VL所对应的子目录(由逐一UCR-VI路由段组成目录名。举例网站www.11一cn.net /index.php/blog/comments组成的缓存目录名正是blogcomments),同时把缓存文件存放在那几个子目录中。
由于缓存文件不会晚点,您要求在您的应用程序中写入删除缓存操作的代码。
除去缓存的函数有三个:
$this->db->cache_delete() 删除缓存文件。假诺你不接纳其余参数,将基于当下的USportageI决定应该破除/更新什么职位的缓存.要去除非当前页面包车型大巴数据库缓存,然而采取$this->db->cache_delete(‘blog’,’comments’);
$this->db->cache_delete_all() 清除全体的缓存文件。
壹五、数据库维护
㈠开首化(载入数据库维护类):$this->load->dbforge();//壹旦初始化,就足以行使$this->dbforge 对象访问类中等高校函授数
㈡创设数据库:$this->dbforge->create_database(‘数据库名’) 成功重临 TRUE,不然再次回到FALSE
㈢删除数据库:$this->dbforge->drop_database(‘数据库名’) 成功重返TRUE,不然重临FALSE
㈣增添字段:$this->dbforge->add_田野同志(‘字段音信数组或字段音信字符串’) 例外情状:$this->dbforge->add_田野先生(‘id’);//加多字段名称为id的INT(玖)类型的电动递增主键
㈤加多主键:$this->dbforge->add_key(‘主键字段名或带有非主键字段名的数组’[,'是否(TRUE/FALSE) 是主键']) 可选的第二个参数倘使被设置为TRUE,那么就能够生成二个主键。请留意 add_key()后边总得调用 create_table()。倘使第四个参数不安装,就是增添非主键。多列的非主键必须通过数组来传递,比方:
$this->dbforge->add_key(array(‘blog_name’, ‘blog_label’));
㈥创建表:$this->dbforge->create_table(‘表名’[,'是否(TRUE/FALSE)添加IF NOT EXISTS子句']);
㈦删除表:$this->dbforge->drop_table(‘表名’);
㈧重命名表:$this->dbforge->rename_table(‘原表名’, ‘新表名’);
㈨修改表:
添加列:$this->dbforge->add_column(‘表名’,’字段新闻数组’)
删除列:$this->dbforge->drop_column(‘表名’,’列名(字段名)’)
修改列:$this->dbforge->modify_column(‘表名’,’字段消息数组’)
概念 字段音讯数组:
在数组中必须含有与字段数据类型相关的“类型”键。例如,INT,VA中华VCHA福特Explorer,TEXT等等。许诸多据类型(如 VACRUISERCHAEnclave)还索要“约束”键。
能够行使的键/值:
type/类型INT,VA奔驰G级CHA昂科拉,TEXT等等:数据类型
constraint/长度值:约束,数据最大尺寸
unsigned/TRUE: 在字段定义中变化“UNSIGNED”。
default/值: 在字段定义中生成多少个缺省值。
null/TRUE: 在字段定义中变化“NULL” 。未有那个,字段缺省为“NOT NULL”。
auto_increment/TRUE: 为字段生成自动增量标志。注意,字段类型必须帮忙电动增量标志,如整型。
例如:
$fields = array(
‘blog_id’ => array(
‘type’ => ‘INT’,
‘constraint’ => 5,
‘unsigned’ => TRUE,
‘auto_increment’ => TRUE
),
‘blog_title’ => array(
‘type’ => ‘VARCHAR’,
‘constraint’ => ‘100’,
),
‘blog_author’ => array(
‘type’ =>’VARCHAR’,
‘constraint’ => ‘100’,
‘default’ => ‘King of Town’,
),
‘blog_description’ => array(
‘type’ => ‘TEXT’,
‘null’ => TRUE,
),
);
1陆、数据库工具类
㈠初步化(载入数据库工具类):$this->load->dbutil();//1旦伊始化达成,你能够经过 $this->dbutil 对象来拜访成员函数
㈡列出具备数据库名:array $this->dbutil->list_databases() 再次回到四个含有数据库名的一维数组
㈢优化数据表:bool $this->dbutil->optimize_table(‘表名’);
㈣修复数据库:bool $this->dbutil->repair_table(‘table_name’);//注意:此个性仅在MySQL/MySQLi数据库中可用。
㈤优化数据库:bool $this->dbutil->optimize_database();//注意:此本性仅在MySQL/MySQLi数据库中可用。
㈥从数据库结果集输出CSV格式内容:string $this->dbutil->csv_from_result($db_result) 第3个参数必须为查询结果集对象;第叁和第三个参数允许你设置分隔符和换行符。暗中同意使用tab(跳格)作为分隔符,使用“\n”作为换行符。
㈦从数据库结果集输出XML格式内容:string $this->dbutil->xml_from_result($db_result) 第1个参数是询问结果集对象,第贰个参数为可选数组参数,数组包涵配置参数。举个例子:
$this->load->dbutil();
$query = $this->db->query(“SELECT * FROM mytable”);
$config = array (
‘root’ => ‘root’,
‘element’ => ‘element’,
‘newline’ => “\n”,
‘tab’ => “\t”
);
echo $this->dbutil->xml_from_result($query, $config);
㈧备份数据库:string $this->dbutil->backup(['备份参数'])
用法:
$this->load->dbutil();
$backup =& $this->dbutil->backup();
$this->load->helper(‘file’);
write_file(‘/path/to/mybackup.gz’, $backup);
$this->load->helper(‘download’);
force_download(‘mybackup.gz’, $backup);
安器材份参数:
将两个暗含了各个参数值的数组作为第二个函数参数字传送递给备份函数,就足以设置数据库备份的参数。比如:
$prefs = array(
‘tables’ => array(‘table一′, ‘table2′), // 包涵了需备份的表名的数组.
‘ignore’ => array(), // 备份时索要被忽略的表
‘format’ => ‘txt’, // gzip, zip, txt
‘filename’ => ‘mybackup.sql’, // 文件名 – 借使选拔了ZIP压缩,此项就是不能缺少的
‘add_drop’ => TRUE, // 是或不是要在备份文件中增添 DROP TABLE 语句
‘add_insert’ => TRUE, // 是不是要在备份文件中加多 INSERT 语句
‘newline’ => “\n” // 备份文件中的换行符,可利用的有”\n”, “\r”, “\r\n”
);
$this->dbutil->backup($prefs);

一、application目录:用于开拓者编写相应的陈设以及逻辑管理,开垦者只需在这一个目录下增添本人索要的付出文件。

CodeIgniter URL:
www.111cn.net /class/function/ID
一、第一段表示调用调节器类。
二、第三段表示调用类中的函数或艺术。 (倘使您的类公事保留在子目录中,那么第3段包蕴了多少个小段:子目录/类函数)
3、第二及越来越多的段表示的是传递给调整器的参数,如 ID 或别的种种变量。
(这里的首先、第一、第二段指的是网站中除域名和index.php之外由斜杠“/”分隔的段)
通过安装 application/config/config.php 文件$config['url_suffix']本条参数,你可感觉 CodeIgniter 生成的 U中华VL 增多1个点名的文件后缀。
比如:www.111cn.net /index.php/products/view/shoes
您能够随便加多1个后缀,比如 .html,使其出示为:
www.111cn.net /index.php/products/view/shoes.html
能够透过安装 application/config/config.php 文件$config['enable_query_strings']参数值为“true”来启用U普拉多L中的查询字符串(形 如:index.php?c=products&m=view&id=3四五),请留意:假设您使用查询字符串,那么就非得接纳本身创建的 U普拉多L ,而且不可能动用ULANDL 援救函数(或是别的生成 U库罗德L 的帮忙函数,举例表单支持函数),因为这几个都以依赖支行 U福睿斯L 设计的。
UWranglerL route路由规则自定义:
一、路由规则文件地点:application/config/routes.php =》$route数组
二、路由规则(通配符规则和正则表明式规则):
二个一级的通配符路由看起来是如此的:
$route['product/:num'] = “catalog/product_lookup”;//数组的键包涵着被相配的U奥迪Q三I,而数组的值包罗着路由将被重定向的指标地.
路由数组的键能够匹配文字的值或许应用以下三种通配符类型:
:num 将相称贰个只含有有数字的段.
:any 将相配1个富含别的字符的段.
也足以应用正则表达式:例如:$route[‘products/([a-z] )/(\d )’] = “$1/id_$2″;
可以勾兑使用通配符与正则表达式.
三、须求被保存的路由:$route['default_controller'] 和 $route['scaffolding_trigger']
决定器类(Controller)
新建调整器:
一、调整器类文件保留地方:application/controllers/
2、调节器类文件的文件名:用调整器类名的全小写格式作文件名,以.php作扩大名
三、调整器类注明格式:㈠必须是Controller类的子类;㈡类名的首字母必须大写。
比如说表明blog调整器类,其注明格式形如:
class Blog extends Controller {
www.716.com ,function __construct(){
parent::Controller();

}
肆、调控类中方法的注解:函数名假诺以下划线“_”起首,则此函数为民用方法(私有方法无法通过网站访问)。
将个人方法名设为_remap:
该方法会撤废掉由 ULX570I 片段来支配哪些方法被调用的规则,允许你再度定义调用方法的平整(方法的路由规则)。
将个人方法名设为_output:
该方法会接收其决定器类的全体出口数据(突显数据),以便由你决定管理和出口。这些方法类似于OO里的析构函数,不管您调用任何情势那么些法子总是会被实施。
5、系统的保存类名:Controller CI_Base CI_Loader
陆、系统的保存方法名:
_ci_initialize
_ci_scaffolding
index
config
database
dbutil
dbforge
file
helper
helpers
language
library
model
plugin
plugins
scaffolding
script
view
vars
_ci_assign_to_models
_ci_autoloader
_ci_init_class
_ci_init_scaffolding
_ci_is_instance
_ci_load
_ci_load_class
_ci_object_to_array
is_really_writable()
load_class()
get_config()
config_item()
show_error()
show_404()
log_message()
_exception_handler()
get_instance()
7、系统的保留变量:$config $mimes $lang
八、系统的保留常量:
EXT
FCPATH
SELF
BASEPATH
APPPATH
CI_VERSION
FILE_READ_MODE
FILE_WRITE_MODE
DIR_READ_MODE
DIR_WRITE_MODE
FOPEN_READ
FOPEN_READ_WRITE
FOPEN_WRITE_CREATE_DESTRUCTIVE
FOPEN_READ_WRITE_CREATE_DESTRUCTIVE
FOPEN_WRITE_CREATE
FOPEN_READ_WRITE_CREATE
FOPEN_WRITE_CREATE_STRICT
FOPEN_READ_WRITE_CREATE_STRICT

持有扶助函数如下:

 

 

 

  1. index.php 文件作为前端调控器,开始化运营 CodeIgniter 所需的为主能源;
  2. Router 检查 HTTP 请求,以鲜明哪些处理该请求;
  3. 借使存在缓存文件,将一向出口到浏览器,不用走上面符合规律的系统流程;
  4. 在加载应用程控器此前,对 HTTP 请求以及任何用户提交的多寡进行安全检查;
  5. 调整器加载模型、主题类库、协助函数以及其余全数拍卖请求所需的能源;
  6. 聊起底一步,渲染视图并发送至浏览器,若是张开了缓存,视图被会先缓存起来用于 后续的乞请。

1、开头化数据库类:约等于接连数据库操作
$this->load->database(‘数据库连接新闻’,’是或不是(TRUE/FALSE)重回连接ID(可用来连接诸多据库)’,’是或不是(TRUE/FALSE)启用Active Record类。默以为 TRUE’);//创设数据库连接
壹旦以上函数的率先个参数未有其余音信,它将会在系统钦赐的数据库配置文件中寻觅。
数据库连接音讯,能够是包涵数据库连接配置的数组或DSN字符串。
连日来例子一、数据库连接新闻是富含数据库连接配置的数组:
$config['hostname'] = “localhost”;
$config['username'] = “myusername”;
$config['password'] = “mypassword”;
$config['database'] = “mydatabase”;
$config['dbdriver'] = “mysql”;
$config['dbprefix'] = “”;
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = “”;
$config['char_set'] = “utf8″;
$config['dbcollat'] = “utf8_general_ci”;
$this->load->database($config);
接连例子2、数据库连接消息是DSN字符串:
$dsn = ‘dbdriver://username:password@hostname/database';
$this->load->database($dsn);
连天例子3、连接许多据库:
$DB1 = $this->load->database(‘group_one’, TRUE);
$DB2 = $this->load->database(‘group_two’, TRUE);
$DB1->query();//只可以动用那种艺术,不能够运用$this->db->query()那种情势
$DB1->result();//同理
重复连接/保持接二连三有效:
$this->db->reconnect();
设若你的具有页面均要求初阶化数据库类,你能够让它自动加载。
要启用“自动连接”,可在application/config/autoload.php文件中的library数组里增添database。
二、标准查询:
㈠多结果正式查询(对象情势):
$query = $this->db->query(‘SELECT name, title, email FROM my_table’);
if ($query->num_rows() > 0)//如若您的询问大概不回去结果,提议你接纳num_rows()函数来测试查询结果
{
foreach ($query->result() as $row)
{
echo $row->title;//下边包车型地铁result()函数再次来到一个分包对象的数组
echo $row->name;
echo $row->email;
}

echo ‘Total Results: ‘ . $query->num_rows();
㈡多结实正式查询(数组情势):
$query = $this->db->query(‘SELECT name, title, email FROM my_table’);
foreach ($query->result_array() as $row)
{
echo $row['title'];//上面的result_array()函数再次来到3个口疮标的数组。
echo $row['name'];
echo $row['email'];
}
㈢单结果正式查询(对象情势)
$query = $this->db->query(‘SELECT name FROM my_table LIMIT 1′);
$row = $query->row();//row()函数再次来到1个对象
echo $row->name;
㈣单结果正式查询(数组方式)
$query = $this->db->query(‘SELECT name FROM my_table LIMIT 1′);
$row = $query->row_array();//row_array()函数重回二个数组
echo $row['name'];
叁、火速查询:
㈠快捷查询类能为大家提供高效得到数据的路线:
$query = $this->db->get(‘table_name’[,'每页的记录数(limit)','偏移值(offset)']);//执行SQL: SELECT * FROM table_name
foreach ($query->result() as $row)
{
echo $row->title;
}
$query = $this->db->get(‘mytable’, 10, 20);//执行SQL: SELECT * FROM mytable LIMIT 20, 10
$this->db->get_where(‘数据表名’,’WHERE从句数组’[,'每页的记录数(limit)','偏移值 (offset)']);//与$this->db->get();函数同样,只是它同意你在函数的第二个参数这里充足2个where从句数 组,从而不用选取db->where()这些函数
㈡SQL语句设置函数:
$this->db->select(‘SELECT部分(再次回到字段列表)’[,'是不是(TRUE/FALSE)用反引号珍视字段和表名']);//此函数允许你在SQL查询中设置SELECT部分
例如:
$this->db->select(‘title, content, date’);
$query = $this->db->get(‘mytable’);
$this->db->select_max(‘查询字段’[,'结果字段重命名']);//字段最大值
范例1:
$this->db->select_max(‘age’);
$query = $this->db->get(‘members’);//执行SQL: SELECT MAX(age) as age FROM members
范例2:
this->db->select_max(‘age’, ‘member_age’);
$query = $this->db->get(‘members’);//执行SQL: SELECT MAX(age) as member_age FROM members
$this->db->select_min(‘查询字段’[,'结果字段重命名']);//字段最小值。与select_max()相似, 你能够接纳性地付出第3个参数,用来给结果字段重命名。
$this->db->select_avg(‘查询字段’[,'结果字段重命名']);//字段平均值
$this->db->select_sum(‘查询字段’[,'结果字段重命名']);//字段和值
$this->db->from(‘数据表名’);//使用了本函数后,就不须求再内定$this->db->get(‘mytable’)函数中的参数了,直接采纳$this->db->get();就可以。
$this->db->join(‘数据表名’,’SQL关联表明式’[,'关联方式(left/right/outer/inner/left outer/right outer)']);
例如:
$this->db->select(‘*’);
$this->db->from(‘blogs’);
$this->db->join(‘comments’, ‘comments.id = blogs.id’);
$query = $this->db->get();
$this->db->where()函数允许你使用种种艺术中的一种来设置WHERE子句:
①、简单的 key/value 方法: $this->db->where(‘name’, $name); //生成: WHERE name = ‘$name’
二、自定义 key/value 方法:可以在率先个参数中蕴藏1个运算符,以便调节相比较:
$this->db->where(‘name !=’, $name);
$this->db->where(‘id <‘, $id);
3、关联数组方法: 使用那个格局时您也能够在键名中包涵运算符:
$array = array(‘name !=’ => $name, ‘id <‘ => $id, ‘date >’ => $date);
$this->db->where($array);
$array = array(‘name’ => $name, ‘title’ => $title, ‘status’ => $status);
$this->db->where($array);
四、自定义字符串: 手动编写子句:
$where = “name=’Joe’ AND status=’boss’ OR status=’active'”;
$this->db->where($where);
$this->db->where() 接受可选的第多个参数。借让你将它设置为 FALSE, CodeIgniter 将不会为您那多少个含有反勾号的字段名或表名提供维护。比方:$this->db->where(‘MATCH (田野同志) AGAINST (“value”)’, NULL, FALSE);
$this->db->or_where()函数与$this->db->where()差不离完全同样,唯一的区分是本函数生成的子句是用 O奥迪Q3 来接二连三的:
$this->db->where(‘name !=’, $name);
$this->db->or_where(‘id >’, $id); // 生成: WHERE name != ‘Joe’ OR id > 50
$this->db->where_in(‘字段名’,’包蕴IN结构中项目标数组’);//生成一段 WHERE 田野 IN (‘item’, ‘item’) 查询语句,假诺正好的话,用 AND 连接起来(而相应的$this->db->or_where_in()函数使用 O本田CR-V 连接)。
$this->db->where_not_in(‘字段名’,’蕴含IN结构中项指标数组’)函数生成一段 WHERE 田野 NOT IN (‘item’, ‘item’) 查询语句,假若方便的话,用 AND 连接起来(而相应的$this->db->or_where_not_in()函数使用 O奇骏连接)。
$this->db->like(‘字段名 或 以字段名称为键,匹配内容为值的数组’[,
'第三个参数是字段名时该字段所相称的字符串',
'通配符(%)位置before/after/both(默认值)'])函数允许你生成 LIKE 子句。
①、简单 key/value 方式:
$this->db->like(‘title’, ‘match’); // 生成: WHERE title LIKE ‘%match%’
若是您往往调用本函数,那么那个原则将由 AND 连接起来(而相应的$this->db->or_like()函数使用 O安德拉 连接)。
2、关联数组格局:
$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->not_like()函数与$this->db->like()大约一模二样,唯一的分裂是它生成 NOT LIKE 语句
$this->db->or_not_like()函数与not_like()差不多完全同样,唯壹的区分是多少个实例之间是用 OLX570 连接起来的
$this->db->group_by(‘字段名或蕴含四个字段名的1维数组’)允许你编写查询语句中的 GROUP BY 部分
$this->db->distinct()为查询语句增添 “DISTINCT” 关键字
$this->db->having(‘字段名、SQL表明式或数组’[,'字段值','是或不是转义'])允许你为您的查询语句编写 HAVING 部分。有二种语法格局,贰个或多个参数都足以:
$this->db->having(‘user_id = 45′); // 生成: HAVING user_id = 45
$this->db->having(‘user_id’, 45); // 生成: HAVING user_id = 45
把七个值通过数组传递过去:
$this->db->having(array(‘title =’ => ‘My Title’, ‘id <‘ => $id)); // 生成: HAVING title = ‘My Title’, id < 45
借使你正在使用2个由CodeIgniter实行转义珍视的数据库,为了防止内容转义,你能够传递可选的第多少个参数,并将其设置为FALSE。
$this->db->or_having(‘字段名、SQL表明式或数组’[,'字段值','是或不是转义'])与 having() 函数大概全盘一致,唯1的区分是三个子句之间是用 “O奥迪Q3” 分隔的。
$this->db->order_by(‘排序的字段或O科雷傲DER BY子句’,’排序方式(asc(升序)或desc(降序)或random(随机))’)设置3个OOdysseyDER BY子句。
例如:
$this->db->order_by(“title”, “desc”); // 生成: ORDER BY title DESC
$this->db->order_by(‘title desc, name asc’); // 生成: ORDER BY title DESC, name ASC
反复调用本函数就足以排序多个字段:
$this->db->order_by(“title”, “desc”);$this->db->order_by(“name”, “asc”); // 生成: ORDER BY title DESC, name ASC
$this->db->limit(‘结果数量’[,'结果偏移量'])函数限制查询所再次来到的结果数量
$this->db->count_all_results(['数据表名'])允许你获取某些特定的Active Record查询所重回的结果数量。能够利用Active Record限制函数,举个例子 where(), or_where(), like(), or_like() 等等。范例:
echo $this->db->count_all_results(‘my_table’);// 生成多个平头,举个例子 25
$this->db->like(‘title’, ‘match’);
$this->db->from(‘my_table’);
echo $this->db->count_all_results();// 生成二个整数,比方 1七
四、规范插入(insert)
$sql = “INSERT INTO mytable (title, name)
VALUES (“.$this->db->escape($title).”, “.$this->db->escape($name).”)”;
$this->db->query($sql);
echo $this->db->affected_rows();
伍、快速插入(insert)
㈠插入函数:
$this->db->insert(‘数据表名’,’关联数组或对象’);
$data = array(
‘title’ => $title,
‘name’ => $name,
‘date’ => $date
);
$this->db->insert(‘mytable’, $data); //第三个参数包括表名,首个参数是1个含有数据的关周全组(也足以是一个目的)。
㈡SQL语句设置函数:
$this->db->set(‘字段名(或关周密组或对象)’,’字段值’[,'是否(TRUE/FALSE)转义'])函数令你能够设置inserts(插入)或updates(更新)值
陆、更新数据
$this->db->update(‘数据表名’,’关联数组或对象’[,'WHERE子句或关联数组'])函数生成并推行一条update(更新)语句。举个例子:
$data = array(
‘title’ => $title,
‘name’ => $name,
‘date’ => $date
);
$this->db->where(‘id’, $id);
$this->db->update(‘mytable’, $data);
在开展翻新时,你仍是能够动用方面所讲述的 $this->db->set() 函数。
7、删除数据
$this->db->delete(‘表名或含有三个表名的数组’,’WHERE子句数组’);生成并实行一条DELETE(删除)语句。
$this->db->empty_table(‘表名’);生成并推行一条DELETE(删除)语句。举例:
$this->db->empty_table(‘mytable’); // 生成 DELETE FROM mytable
$this->db->truncate(['表名']);生成并实行一条TRUNCATE(截断)语句。
$this->db->from(‘mytable’);
$this->db->truncate();
$this->db->truncate(‘mytable’);
捌、链式方法
链式方法允许你以几次三番多个函数的点子简化你的语法。典范:
$this->db->select(‘title’)->from(‘mytable’)->where(‘id’, $id)->limit(10, 20);
$query = $this->db->get();
链式方法只万幸PHP 伍下边运行。
9、Active Record缓存
缓存调用是增加的。要是您调用了四遍有缓存的 select(),然后再调用三次未有缓存的 select(),那会形成 select() 被调用7回。有多个可用的缓存函数:
$this->db->start_cache() 开启缓存
$this->db->stop_cache() 结束缓存
$this->db->flush_cache() 清空缓存
能够被缓存的语句有: select, from, join, where, like, groupby, having, orderby, set
10、事务
CodeIgniter允许你在支撑工作安全的数据库表中使用专门的工作。在MySQL中,你必要用InnoDB或BDB表而不是更常用的MyISAM。大大多任何的数据库平台都原生帮忙职业。
CodeIgniter的事体方法:
$this->db->trans_start() 启用事务。要采用测试格局只需将$this->db->trans_start()函数的第叁个参数设置为 TRUE 就可以
$this->db->trans_complete() 完毕业务。
$this->db->trans_off() 禁止使用工作。
$this->db->trans_strict(FALSE); 禁止使用严谨格局。默许情状下, CodeIgniter 以严峻情势运作具备事情。当严厉情势被启用时, 倘令你正在运营多组的事务, 只要有1组战败, 全部组都会被回滚。假使严苛格局被禁止使用, 每一组都被视为独立的组, 这象征其中八个组的曲折不会影响其余组。
$this->db->trans_status() 事务状态,实施停业再次来到FALSE
$this->db->trans_begin() 手动运维专门的职业
$this->db->trans_rollback() 回滚
$this->db->trans_commit() 实行提交
11、表数据
$this->db->list_tables() 获取表新闻。重回2个涵盖当前线总指挥部是数据库中具备表名称的数组
$this->db->table_exists(‘表名’) 判别表是不是留存。再次来到布尔值:TRUE/FALSE。
1二、字段数据
$this->db->list_fields(‘表名’)/$query->list_田野(field)s() 重回2个暗含字段名称的数组
$this->db->field_exists(‘字段名’,’表名’) 推断字段是或不是留存。再次来到布尔值:TRUE/FALSE。
$this->db->field_data(‘表名’)/$query->field_data() 重返二个分包字段名称音讯的对象数组。 借使那些函数辅助你的数据库,它将会重返以下数据:
name – 列名称
max_length – 列的最大尺寸
primary_key – 一 万壹此列被定义为主键
type – 钦定列的数据类型

    开采者在 application/controller 目录下加多本身的controller 调控器,可是每一个调节器都要几次三番核心Curry的基类 CI_Controller,它已获得到整个框架的中坚类库对象,通过它基本能够调用CI框架下的基本措施。

视图(view)

控制器

激活调节和测试器:$this->output->enable_profiler(TRUE);
剥夺调节和测试器:$this->output->enable_profiler(FALSE);
设定基准点:
$this->benchmark->mark(‘标记1′);
$this->benchmark->mark(‘标记2′);
echo $this->benchmark->elapsed_time(‘标识一′, ‘标志二′);//输出四个暗号间的代码的试行时间
展示总的实行时间:
在模板文件中选用 <?php echo $this->benchmark->elapsed_time();?> 或 {elapsed_time}
展现内部存款和储蓄器消耗:
壹经您的PHP在设置的时候被安插成–enable-memory-limit,你能够将上边的代码蕴涵到视图像和文字件中显得整个类别的内部存储器使用量:
<?php echo $this->benchmark->memory_usage();?>
小心:这些函数只还好视图像和文字件中使用.那个消耗量就是应用程序的全体内部存款和储蓄器消耗.
假定不希罕使用纯PHP,其它1种备用的来展现内部存款和储蓄器使用量的方式是在视图像和文字件中应用这一个伪变量:{memory_usage}
管理应用程序
一经你要对application文件夹进行重命名, 你须要展开应用程序中的index.php文件,对变量$application_folder进行转移:
$application_folder = “application”;
视图像和文字件中的PHP代替语法
自动短标志支持:<?=$variable?>
代替调整结构:
if,for,foreach,和 while 相应的闭馆语法分别是:endif,endfor,endforeach,和 endwhile
if(…):

elseif(…):

else:

endif;
代替调控结构上校全体的左花括号“{”替换为冒号“:”;
删去了右花括号“}”;
以关闭语法加分号“;”结束。
安全
1、UCR-VI安全:U大切诺基I 一般只包涵下列内容:
字母和数字
波浪符: ~
句号: .
冒号: :
下划线: _
破折号: –
二、跨站脚本过滤(XSS Filtering):
$data = $this->input->xss_clean($data[,bool $is_image]);//当数码是图形文件时需将第二个参数设为true,图片安全则赶回true不然赶回false
只要你想让codeigniter自动管理POST可能总老董KIE数据。你能够在application/config/config.php文件中设定:
$config['global_xss_filtering'] = TRUE;
三、使用GET,POST, 经理KIE, 或SE帕杰罗VE凯雷德数据:分别使用一下措施赢得:
$this->input->get()
$this->input->post()
$this->input->cookie()
$this->input->server()
譬如说获得$_POST['something']的数据:$something = $this->input->post(‘something’);
$this->input->get_post()方法将会寻找POST和GET方式的数据流,首先以POST情势寻觅参数第11中学的值,不然以GET方式搜索
如重③了$this->input->server()方法之外,它们都还有第一个参数用以设置是或不是开始展览跨站脚本过滤(XSS Filtering)。
比如:$this->input->get_post(‘some_data’, TRUE);
输入类除却上边多少个之外还有:
$this->input->ip_address();//获取IP地址
$this->input->valid_ip($ip);//验证IP地址是不是可行
$this->input->user_agent();//获取浏览器的user agent音讯
四、表单验证:
为了举办表单验证,你须要那三样东西:

随之引进 大旨库system/core下的 CodeIgniter.php文件,该文件发轫化大旨库system/core里的类库,分别是:

调治应用程序

 

数据库操作

3、user_guide:用户手册。

㈠、3个饱含表单的视图像和文字件。
<html>
<head>
<title>My Form</title>
</head>
<body>
<?php echo validation_errors(); ?>
<?php echo form_open(‘form’); ?>
<h5>Username</h5>
<input value=”<?php echo set_value(‘username’); ?>” size=”50″ />
<h5>Password</h5>
<input value=”” size=”50″ />
<h5>Password Confirm</h5>
<input value=”<?php echo set_value(‘email’); ?>” size=”50″ />
<h5>Email Address</h5>
<input value=”” size=”50″ />
<div><input value=”Submit” /></div>
</form>
</body>
</html>
validation_errors()函数用于体现全部错误新闻。
展现有些表单域的错误新闻:form_error(‘表单域名’);
set_value(‘表单域名’[,'默认值'])函数用于重新提交表单时,用上次输入的值重新填充文本框和文本区。借令你使用三个数组作为一个表单域的域名,你不可能不将以此数组作为本函数的参数。下边四个出口选择景况:
set_select(‘下拉菜单域名’,’下拉菜单项的值’[,'是或不是(TRUE/FALSE)暗中同意选中'])
set_checkbox(‘复选框域名’,’复选框项目值’[,'是还是不是(TRUE/FALSE)私下认可选中'])
set_radio(‘单选框域名’,’单选框项目值’[,'是还是不是(TRUE/FALSE)暗中认可选中'])
㈡、2个含有“成功”消息的视图文件,在成功交付后将被出示。
<html>
<head>
<title>My Form</title>
</head>
<body>
<h3>Your form was successfully submitted!</h3>
<p><?php echo anchor(‘form’, ‘Try it again!’); ?></p>
</body>
</html>
㈢、贰个收受并拍卖所提交数据的调控器函数。
class Form extends Controller {
function index()
{
$this->load->helper(array(‘form’, ‘url’));
$this->load->library(‘form_validation’);
if ($this->form_validation->run() == FALSE)
{
$this->load->view(‘myform’);//表单页面myform.php,保存在您的applications/views/ 文件夹中
}
else
{
$this->load->view(‘formsuccess’);//成功页面formsuccess.php,保存在您的applications/views/ 文件夹中
}
}
}
安装验证规则:要安装验证规则请使用set_rules() 函数:$this->form_validation->set_rules();
该函数使用四个参数:
壹、表单域的域名。
贰、表单域的名字,它将被插入到错误音信中。例如,若是你有三个表单域叫做“user”你或者给它1人性化名字称为“用户名”。
3、为此表单域设置的认证规则。 CodeIgniter允许你将多少个规则用竖线“|”连接在联合。任何PHP自身还行叁个参数的函数都足以被作为2个条条框框,比如htmlspecialchars, trim, MD5, 等。要调用一个回调函数只需把函数名加三个”callback_”前缀放在验证规则里,并在你的调控器中加多注解这些新的函数。
您也足以将一层层验证规则作为叁个数组$config保存到布署文件application/config/form_validation.php ,然后将此数组作为唯一参数字传送递给set_rules()。你能够组织这几个规则到“组”里。那个组既能够在适合 调控器类/类格局的调用时自动加载(通超过实际行$this->form_validation->run()),也得以在用到时你手动调用(通过试行$this->form_validation->run(‘组名’))。
规则参数列表:
required:如若成分为空,重返FALSE
matches:借使表单成分不相配参数中所定义的某1项,重回FALSE。相当于枚举。举例:matches[form_item]
min_length:假设表单元素长度小于定义的矮小长度,再次来到FALSE。举个例子:min_length[6]
max_length:假使表单成分长度超越定义的最大尺寸,重临FALSE。例如:max_length[12]
exact_length:假使表单成分不是准确的参数值,重回FALSE。 exact_length[8]
阿尔法:要是表单成分包括字母情势以外的其它字符,重临FALSE。
alpha_numeric:假若表单成分包罗字母、数字以外的字符,重回FALSE。
alpha_dash:要是表单成分包括字母、数字、下划线、短横线以外的字符,重临FALSE。
numeric:如若表单成分包涵数字以外的字符,再次回到 FALSE。
integer:如果表单成分包括整数以外的字符,再次来到 FALSE。
is_natural:假设表单成分蕴涵自然数(0,壹,二,三等)以外的字符,返回FALSE。
is_natural_no_zero:借使表单成分蕴涵非零的自然数(1,二,3等)以外的字符,重返FALSE。
valid_email:假使表单成分不是三个实用的E-mail地址,再次来到 FALSE。
valid_emails:借使表单成分中有八个E-mail地址(用半角逗号“,”隔绝),只要它们个中的妄动三个E-mail地址不是一个卓有功用的E-mail地址,就回来 FALSE。
valid_ip:若是表单成分不是3个实用的IP地址,再次来到 FALSE。
valid_base6四:要是表单成分包蕴Base6四字符编码以外的字符,重临 FALSE。

图片 1

多个视图正是2个网页,或是网页的局地,如底部,尾部,侧边栏等等。
视图从不直接调用,必须被3个调控器来调用。
一、视图像和文字件保留地点:application/views/
二、视图像和文字件的公文名:以.php作扩张名
叁、在支配器类中载入视图:$this->load->view(‘name’); //在这之中的 name 正是你的视图像和文字件的名字(如若视图像和文字件存于子目录中,则还应包罗子目录名,如:子目录1/试图像和文字件名)。注意:.php 文件的扩充名(后缀名)没有须求专门写出,除非您使用了别样的扩展名。
四、向视图像和文字件中传递数据:数据通过调节器以1个数组或是对象的样式传播视图 , 那个数组或对象作为视图载入函数的第三个参数(比如:$this->load->view(‘name’,array(‘title’=& amp; gt;’标题’,’content’=>’内容’)); )。当大家1遍性载入多少个视图的时候,只需在第壹个视图传入数据就足以了。
五、获取视图的剧情:将$this->load->view()函数的第四个参数设为“true”,比方:
$string = $this->load->view(‘myfile’, ”, true);
view方法中的第11个参数表示不出口视图,而只是将结果回到给3个变量。
模型(Model)
模型类的宣示方式同调整器类。不相同的只是
1、模型类公事保留地点:application/models/
贰、模型类的父类名字为:Model
三、调用方式分歧:㈠调控器类是因而UKoleosL调用;㈡模型类是因此在决定器类中运用:
$this->load->model(‘Model_name’);
引用,引用的时候,第三个参数为模型类名(也许还含有子目录名);第3个参数为引用后给予的新对象名;能够将第多少个参数设置为TRUE(或含有数据库连天配置的数组)来使模型装载函数自动一连数据库。
帮衬函数(helpers)
1、帮衬函数文件保留地点:system/helpers 或 system/application/helpers
二、扶助函数文件名:yourname_helper.php(假如是你扩展的,将在加前缀“MY_”,或你自定义的前缀(application/config/config.php :$config['subclass_prefix'] = ‘MY_';))
3、载入单个协助函数文件:$this->load->helper(‘扶助函数文件名’);//协助函数文件名不包蕴“_helper.php”部分
四、载入三个帮衬函数文件:$this->load->helper( array(‘协理函数文件名一′, ‘援助函数文件名二′, ‘协理函数文件名三′) );
伍、自动载入扶助函数文件:能够由此展开 application/config/autoload.php ,并往自动载入数组(autoload array)中加进帮衬函数文件名来达成。
插件(plugins)
插件的做事方式差不离和援助函数大同小异。它们最要害的分别在于插件文件一般唯有三个函数,而赞助函数文件之中普通是一名目多数函数。帮忙函数被看做系统核心的1局地,而插件平时是网上好友制作和享受的。
1、插件文件保留地点:system/plugins 或 system/application/plugins
二、插件文件的文件名:yourname_pi.php
三、载入单个插件:$this->load->plugin(‘插件名’);//插件名不包罗“_pi.php”部分
四、载入三个插件:$this->load->plugin( array(‘插件名1′, ‘插件名二′, ‘插件名3′) );
五、自动载入插件:能够经过展开 application/config/autoload.php ,并往自动载入数组(autoload array)中加进插件来促成
类库(libraries)
一、类库文件保留地方:system/libraries(系统类库) 或 system/application/libraries(自定义类库)
二、自定义类库命名约定:类名和类公事名应保持壹致,它们的首字母必须大写(如是增加系统类库的类,要加前缀“MY_”,前缀可设置 application/config/config.php:$config['subclass_prefix'],注意:全数原始 CodeIgniter类库以 CI_ 作为前缀,所以请勿以CI_用作你和谐的前缀.)
三、类公事的格式
㈠完全自定义的类:
㈡扩大系统类库的类:
class MY_Email extends CI_Email {
function My_Email()
{//如若你须要在类中央银行使构造函数,你不能够不在构造函数中显式传承母类构造函数:
parent::CI_Email();
}
}
当你在自定义类中想使用CodeIgniter原始类时,你可以那样做:
先是,定义CodeIgniter对象赋给三个变量:
$CI =& get_instance();//必须以引用的艺术
要是定义有些对象为1个变量,你就足以应用卓殊变量名替代$this:
$CI =& get_instance();
$CI->load->helper(‘url’);
$CI->load->library(‘session’);
$CI->config->item(‘base_url’);
etc.

数据库

     CI框架封装了多样数据库驱动与连接方式,令你轻轻易松配置就会接2连三上,且包装了部分查询构造器与变化查询结果,让代码看起来方便简单。

你只需 在application/config/database.php 文件下安顿你链接的参数:

$db['default'] = array(
    'dsn'    => '',
    'hostname' => 'localhost',
    'username' => '',
    'password' => '',
    'database' => '',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

接下来在 Controller 里调用一句 :$this->load->database(); 就会接贰连三上数据库。

随后,你能够查询你想要的结果:

$this->db->where('name',$name);

$query=$this->db->get('mytable',10,20);

// Executes: SELECT * FROM mytable where name=$nameLIMIT 20, 10

CI框架也提供了数据库的事务管理,如:

$this->db->trans_start();$this->db->query('AN SQL QUERY...');$this->db->query('ANOTHER QUERY...');$this->db->query('AND YET ANOTHER QUERY...');$this->db->trans_complete();

 

 

 

留意: 要是您选用php 四,那么请最好不用在类的构造函数中调用 get_instance() .php肆在引用位于构造函数中的CI super object时存在难题,因为对象只有在类完全实例化后才存在.
4、载入类库:$this->load->library(‘类公事名(也是类名)’,’构造函数的参数数组’);//类文件名不用加 上”.php”扩充名(如是增添系统类库的类,也绝不加application/config /config.php:$config['subclass_prefix']所定义的前缀),名字不分大小写;构造函数的参数数组唯有在构造函数存在 且供给传入参数的时候才设置。
五、使用类库对象:$this->小写的类名->类中的方法(); // 对象的实例名永久都以小写的
钩子(hooks)-扩充框架的主干
一、启用钩子:application/config/config.php =》$config['enable_hooks'] = TRUE;
贰、定义钩子:application/config/hooks.php =》
㈠定义单个钩子:
$hook['pre_controller'] = array(
‘class’ => ‘MyClass’, //你期望调用的类名.要是你更爱好使用进度函数取代类的话,此项留空.
‘function’ => ‘Myfunction’, //你指望调用的函数名.
‘filename’ => ‘Myclass.php’, //包罗有你的类/函数的文本名.
‘filepath’ => ‘hooks’, //包涵你的台本的目录名(绝对于application文件夹).
‘params’ => array(‘beer’, ‘wine’, ‘snacks’) //你指望传递给脚本的任何参数. 此项是可选的.
);
㈡定义多个钩:
$hook['pre_controller'][] = array(
‘class’ => ‘MyClass’,
‘function’ => ‘Myfunction’,
‘filename’ => ‘Myclass.php’,
‘filepath’ => ‘hooks’,
‘params’ => array(‘beer’, ‘wine’, ‘snacks’)
);
$hook['pre_controller'][] = array(
‘class’ => ‘MyOtherClass’,
‘function’ => ‘MyOtherfunction’,
‘filename’ => ‘Myotherclass.php’,
‘filepath’ => ‘hooks’,
‘params’ => array(‘red’, ‘yellow’, ‘blue’)
);
3、挂勾点:
pre_system:
系统进行的初期调用.仅仅在benchmark 和 hooks 类 加载完成的时候. 未有施行路由或许别的的进程.
pre_controller:
在调用你的别的调整器以前调用.此时所用的基本功类,路由选择和安全性检查都已完毕.
post_controller_constructor:
在你的调整器实例化之后,任何措施调用以前调用.
post_controller:
在您的调整器完全运会转之后调用.
display_override:
覆盖_display()函数, 用来在系统实践最后向web浏览器发送末了页面.那允许你用自身的办法来突显.注意,你要求通过 $this->CI =& get_instance() 引用 CI 一流对象,然后那样的结尾数额足以因此调用 $this->CI->output->get_output() 来获得。
cache_override:
能够让你调用本人的函数来代替output类中的_display_cache() 函数.那足以让您使用自身的缓存呈现格局
scaffolding_override:
能够让scaffolding(脚手架)的呼吁去接触你自身的台本替代.
post_system:
在终极着色页面发送到浏览器之后,浏览器接收完最终数额的系列施行最终调用。
机动加载财富
CodeIgniter有二个活动加载属性,它同目的在于系统运作进度中初露的自发性加载库(libraries),帮忙函数(helpers),插件(plugins)。
要活动加载能源,先开发 application/config/autoload.php 文件,然后扩展你想要自动加载的品类在 autoload 数组中(不包涵文件扩大名“.php”)。
公物函数
bool is_php(‘版本号’)
例如已设置的PHP版本号等于或超越你所提供的版本号,本函数将回来布尔值 TRUE,不然重返 FALSE。
bool is_really_writable(‘path/to/file’)
钦点文件是还是不是可写。在Windows平台,is_writable()函数在其实未有公文写权限制期限也回到真。
mix config_item(‘item_key’)
赢得单个配置新闻
show_error(‘消息’[,int $status_PHP中CODEIGNITER开发框架入门教程,CI框架浅析。code = 500 ])
本条函数将会动用以下错误模版来展现错误音讯:
application/errors/error_general.php
show_404(‘页面’)
以此函数将会选拔以下错误模版来展示 40四 错误音信:
application/errors/error_404.php
log_message(‘级别’, ‘消息’)
本条函数可以让你将消息写入记录文件中。你无法不在首先个参数中选用多少个“等第“中的任何3个, 指明它是哪一类音讯(调节和测试debug, 错误 error, 音讯info)。 第1个参数是新闻作者。
在意: 确认保证”logs” 文件夹是可写的,技巧正确地将音信写入记录文件中。其它,你不能不要设置记录的“threshold“来实行记录。比如通过安装“threshold“,你 能够只记录错误类型的音信,而不用记录别的二种。假诺你将“threshold“设为0,记录就能够被取缔。
set_status_header(code, ‘text’);
安装服务器状态头(header)。比如:set_status_header(401);// 将header设置为: Unauthorized
脚手架(Scaffolding)
CodeIgniter 的脚手架功用使您能够在开垦进程中有益高效的在数据库中丰硕、删除、修改数据。
十三分关键: 脚手架(Scaffolding)只好够在付出进程中使用。因为它提供了分外少的商洛保卫安全,所以能够访问到你的 CodeIgniter 站点的任何人都能够增加删减或更动您数据库中的数据。假诺您使用脚手架,那么请确认您在运用完未来自然要立马禁止它。千万不要在上线的站点中激活它,并且 一定要在动用前给它设置三个密匙(secret word)。
1、设置1个密匙(Secret Word):application/config/routes.php =》$route['scaffolding_trigger']把值替换来你的密匙(密匙不能够以下划线初叶)。
贰、激活脚手架:在你的调控器构造函数中增加这样的代码:$this->load->scaffolding(‘数据表名’);
比如:
class Blog extends Controller {
function Blog()
{
parent::Controller();
$this->load->scaffolding(‘table_name’);//激活脚手架
}
}
叁、使用脚手架:www.11一cn.net /index.php/调控器类/脚手架密钥/
脚手架特性只可以操作有主键的表,因为那是各类数据库函数所不能缺少的音信。
网页缓存
当多少个网页第二回被加载的时候,缓存文件将被封存到system/cache文件夹。下次作客的时候,系统就能够一向读取缓存文件,然后再次来到给用户的浏览器。如果缓存文件过期,它将被删去不分畛域复生成。注意:Benchmark 标签在使用了缓存的页面仍旧可用。
壹、运维缓存:将代码$this->output->cache(n);放在你的支配器类的函数中(代码中的n是您愿意缓存更新的分钟数)。
2、清除缓存:将下面的代码从您的支配器类中删除就可以。相应缓存会自动过期并被删除

最终在协和定义的controller调控器管理好的数额结果渲染在html 页面上,显示给用户。

开垦标准
一、文件格式:文件应当利用无BOM的UTF-捌编码,并用LF作为换行符。
2、PHP闭合标签:全体的php文件应当省略那么些php闭合标签“?>”,并插入1段注释来表明那是文本的底层并一贯那几个文件在那一个动用的相对路线。那样有利于你鲜明那些文件已经收尾而不是被删节的。比如:
/* End of file myfile.php */
/* Location: ./system/modules/mymodule/myfile.php */
三、类和艺术(函数)的命名规则:类名的首字母应该大写,构造方法的称谓要与类名一样。假诺名称由三个词组成,词之间要用下划线分隔,不要选取骆驼命名法。类中全体此外事办公室法的名号应当完全小写并且名称能明了指明那个函数的用途,最佳用动词开头。尽量幸免过长和冗余的称呼。
四、变量命名:变量名应该只包罗小写字母和数字(不能够以数字初步),用下划线分隔,并且能方便地指明变量的用处和剧情。那些短的、无意义的变量名应该只作为迭代器用在for()循环里。
5、注释:
文档块注释:
/**
* Super Class
*
* @package Package Name
* @subpackage Subpackage
* @category Category
* @author Author Name
* @link
*/
行注释:使用行注释时,在大的笺注块和代码间留一个空行。
5、常量:常量命名除了要1切用大写外,其余的规则都和变量同样。
陆、特殊变量:TRUE, FALSE, 和 NULL关键字应该全套大写。
7、逻辑操作符: 在||、&&、!的上下都要加二个空格。
任由什么样时候,在申明有参数的函数时,要给参数设定暗中同意值。

图片 2

 

 

     这段代码主要是 加载(include_once) system/helpers 与 appliation/helpers 目录下的 $name_helper.php 名称文件,自定义的增派函数文件须要加多 前缀 来与 系统的帮手函数区分开。当执行完加载函数,就会取得 $this->name 实例,然后调用它个中的函数。

    在 CodeIgniter.php 早先化宗旨库的时候定义了三个钩,分别如下:

/**
     * Helper Loader
     *
     * @param    string|string[]    $helpers    Helper name(s)
     * @return    object
     */
    public function helper($helpers = array())
    {
        is_array($helpers) OR $helpers = array($helpers);
        foreach ($helpers as &$helper)
        {
            $filename = basename($helper);
            $filepath = ($filename === $helper) ? '' : substr($helper, 0, strlen($helper) - strlen($filename));
            $filename = strtolower(preg_replace('#(_helper)?(.php)?$#i', '', $filename)).'_helper';
            $helper   = $filepath.$filename;

            if (isset($this->_ci_helpers[$helper]))
            {
                continue;
            }

            // Is this a helper extension request?
            $ext_helper = config_item('subclass_prefix').$filename;
            $ext_loaded = FALSE;
            foreach ($this->_ci_helper_paths as $path)
            {
                if (file_exists($path.'helpers/'.$ext_helper.'.php'))
                {
                    include_once($path.'helpers/'.$ext_helper.'.php');
                    $ext_loaded = TRUE;
                }
            }

            // If we have loaded extensions - check if the base one is here
            if ($ext_loaded === TRUE)
            {
                $base_helper = BASEPATH.'helpers/'.$helper.'.php';
                if ( ! file_exists($base_helper))
                {
                    show_error('Unable to load the requested file: helpers/'.$helper.'.php');
                }

                include_once($base_helper);
                $this->_ci_helpers[$helper] = TRUE;
                log_message('info', 'Helper loaded: '.$helper);
                continue;
            }

            // No extensions found ... try loading regular helpers and/or overrides
            foreach ($this->_ci_helper_paths as $path)
            {
                if (file_exists($path.'helpers/'.$helper.'.php'))
                {
                    include_once($path.'helpers/'.$helper.'.php');

                    $this->_ci_helpers[$helper] = TRUE;
                    log_message('info', 'Helper loaded: '.$helper);
                    break;
                }
            }

            // unable to load the helper
            if ( ! isset($this->_ci_helpers[$helper]))
            {
                show_error('Unable to load the requested file: helpers/'.$helper.'.php');
            }
        }

        return $this;
    }

以内根据开荒者在application/config目录下的布署,会加载相应的 librays 类库、 helper协理函数 及 DB 库。

 

只要您喜欢MVC的支付方式,也可以增进model类,然后加载 model 模型类,管理相应的事情逻辑。

上面看一下CI框架多少个至关心珍视要部分:

各种类库的笺注在上航海用体育地方已有表达。

}

 

未有差距于举行本身的类库也是在application/libraries 目录下。

 

 

{

CI是三个很轻松的框架,整个下载包也就二M多,而且动用起来方便急速,适用于部分简单易行的功用开采,以及做app 接口。

 

  • 数组帮忙函数
  • 验证码帮助函数
  • Cookie 支持函数
  • 日子协理函数
  • 目录辅助函数
  • 下载扶助函数
  • 邮件帮忙函数
  • 文本支持函数
  • 表单扶助函数
  • HTML 支持函数
  • Inflector 支持函数
  • 言语帮忙函数
  • 数字帮助函数
  • 渠道协助函数
  • 康宁救助函数
  • 表情协助函数
  • 字符串帮忙函数
  • 文件协助函数
  • 排版帮助函数
  • UENCOREL 支持函数
  • XML 帮忙函数  

 

  • 规格测试类
  • 缓存驱动器
  • 日历类
  • 购物车类
  • 配置类
  • Email 类
  • 加密类
  • 加密类(新版)
  • 文本上传类
  • 表单验证类
  • FTP 类
  • 图像管理类
  • 输入类
  • Javascript 类
  • 语言类
  • 加载器类
  • 迁移类
  • 输出类
  • 分页类
  • 模板解析类
  • 安全类
  • Session 类
  • HTML 表格类
  • 引用布告类
  • 排版类
  • 单元测试类
  • URI 类
  • 用户代理类
  • XML-RPC 与 XML-RPC 服务器类
  • Zip 编码类

 

{
  ● benchmark: "Benchmark",
  ● hooks: "Hooks",
  ● config: "Config",
  ● log: "Log",
  ● utf8: "Utf8",
  ● uri: "URI",
  ● router: "Router",
  ● output: "Output",
  ● security: "Security",
  ● input: "Input",
  ● lang: "Lang",
  ● loader: "Loader"
}

 

CI 类库

假诺加载,你就能够应用小写字母名称来访问你的类,调用方法:

本文由韦德国际1946英国发布于计算机网络,转载请注明出处:PHP中CODEIGNITER开发框架入门教程,CI框架浅析

关键词:

上一篇:Python基础03 序列

下一篇:没有了