首先我们必须知道CodeIgniter是什么?
CodeIgniter是一个应用程序框架,是一个为用PHP编写网络应用程序提供的工具包
CodeIgniter使用严格的M-V-C模型,这样可以更好地使表现层和逻辑层分离。
CodeIgniter生成干净的URL
CodeIgniter URL
example.com/news/article/my_article
example.com/class/function/ID
第一段表示的控制器类
第二段表示调用类中的函数或者方法
第三以及更多的字段表示的是传递给控制器的参数,如ID或者其他各种变量。
删除index.php文件
默认情况下,index.php
example.com/index.php/class/function/ID
可以通过.htaccess文件来设置一些简单的规则来删除它,使用“negative”方法将非指定内容进行重定向:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
什么是控制器
简而言之,一个控制器就是一个类文件,是以一种能够和URL关联在一起的方式来命名的。
example.com/index.php/blog/
这个例子中CodeIgniter加载是一个名为blog.php
<?php
}
Function index(){
}
}
?>
把以上代码写到blog.php中,放入application/controllers/文件夹下,现在使用类似这样的URL访问你的站点
Example.com/index.php/blog/
注意:类名首字母必须大写
上例中用到的方法名是index()。如果URL的第二部分为空的话,会默认载入”index”方法,也可以将地址写成这样来访问。
定义默认控制器
当你的网站没有设置URI或者直接从更目录访问的时候,Codeigniter会加载默认的控制器,打开application/config/routes.php
$router[‘default_controller’]=’Blog’;
视图
首先创建一个视图,在application/views/文件夹下建立一个blogview.php的文件。
<html>
<head>
<title>My Blog</title>
</head>
<body>
<h1>Welcome to my blog</h1>
</body>
</html>
然后是加载视图
在blog.php控制器中的方法中用一下方法进行加载视图
$this->load->view(‘blogview’);
可以加载多个视图,并且可以传递一些动态数据
例如一下代码,在blog.php控制器中
function show() {
在view中就可以这样去使用
<html>
<head>
<title><?php echo$title;?></title>
</head>
<body>
<h1><?php echo$heading?></h1>
</body>
</html>
循环输出数据大代码:
<ul>
<?php foreach($todo_list as $item):?>
<li><?php echo$item;?></li>
<?php endforeach;?>
</ul>
什么是模型?
模型是专门用来和数据库打交道的php类,例如,假设想做一个Blog,你可以写一个模型类,里面包含插入、更新、删除blog数据的方法。
下面写一个简单的例子
在数据库中建立一个表,表名位user
字段 | 备注 |
Id | 编号,主键自动增长 |
Username | 姓名 varchar |
Phone | 电话 varchar |
在models中建立一个名字为user.php的模型类。下面是具体代码
<?php
}
}
?>
注意model类必须继承超级model类CI_Model
下面是数据库的配置:在application/config/database.php下修改代码如下
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '******';
$db['default']['database'] = 'dbname';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
在控制器中加载这个配置以及model类,在controllers下定义控制器类user.php
<?php
}
Function add(){
}
}
?>
辅助函数是帮助我们完成特定任务的函数,每个辅助函数文件仅仅是一些函数的集合。CodeIgniter默认没有载入辅助函数文件。所以如果想使用辅助函数,就必须先载入它,一旦载入,辅助函数将全局可用,可以在controller和views中使用它们,辅助函数文件,一般保存在system/helpers或者application/helpers文件夹中,CodeIgniter将会先在application/helpers下寻找对应的辅助函数文件,如果该目录不存在或者目录下没有对应的辅助函数文件,CI才会载入system/helpers下的辅助函数文件。
载入辅助函数,$this->load->helper(‘name’);例如要载入文件名为url_helper.php,载入形式如下
$this->load->helper(‘url’);
一次可以载入多个辅助函数,参数要用数组形式
$this->load->helper(array(‘helper1’,’helper2’,……));
使用CodeIgniter类库
所有的类库文件存放在system/libraries文件夹。大多数情况下你需要预先在controller中初始化后才能使用它们。
$this->load->library(‘class_name’);
加载类库时,一次也可以加载多个类库。
注意:程序员还可以自定义自己的类库
使用CodeIgniter适配器,适配器是一种特殊的库,它有一个父类和任意数量的子类,子类可以访问其父类元素,但不能访问其兄弟类的元素,在你的控制器中,适配器为类库提供了一种优雅的语法,一次类库会就此获益甚至会需要分解成离散的类。
适配器的源文件放在system/library目录下。
基准测试类
CodeIgniter有一个总是有效的基准测试类,能够用来计算两个标记点的时间差。
测试基准类可以在控制器,视图或者模型中使用,用法如下:
标记一个开始点
标记一个结束点
运行elapsed_time函数显示结果
$this->benchmark->mark('code_start');
// Some code happens here
$this->benchmark->mark('code_end');
echo $this->benchmark->elapsed_time('code_start', 'code_end');