CodeIgniter框架深入理解

.

CodeIgniter框架深入理解

1.CodeIgniter是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为 PHP 程序员建立功能完善的 Web 应用程序。如果你是一个使用共享主机,并 且为客户所要求的期限而烦恼的开发人员,如果你已经厌倦了那些傻大笨粗的框架那么 CodeIgniter 就是你所需要的。CodeIgniter 是一个基于MVC框架的PHP开源轻量级框架 ,适合快速开发,相对与Zend Freamwork,其更容易学习和应用,而且CodeIgniter 入门简单,配置方便

2.对于标准的MVC框架来说,Model(模型) 是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据; View(视图) 是应用程序中处理数据显 示的部分也就是用户能够看到的界面,通常视图是依据模型数据创建的;Controller(控制器)是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用 户输入,并向模型发送数据,最后,将模型返回的数据发送给视图,显示在界面上。
Controller层往往是程序的入口(网页的地址就是 Controller层的地址 ) ,然后由 Controller层加载 View层进行显示(显示在浏览器上的页面 其实并不是你输入的地 址),在View层用户通过表单实现交互,表单将数据传回 Controller层,由 Controller层调用Model层进行数据处理、存储、读取等操作,然后Model 层将处理结果返回 给 Controller层, Controller层再次加载View层显示处理的结果

3.配置CI开发环境
(1)在开发工具中创建工程目录ci(名字随便),把CodeIniter压缩包解压后的所有文件(不复制根目录)再复制到eclipse中的工程ci中
使用文本编辑器打开 application/config/config.php 文件设置你网站的根 URL,如果你想使用加密或会话,在这里设置上你的加密密钥;
如果你想通过隐藏 CodeIgniter 的文件位置来增加安全性,你可以将 system 和 application 目录修改为其他的名字,然后打开主目录下的 index.php 文件将 $system_path 和 $application_folder 两个变量设置为你修改的名字。

(2)为更好的安全性,system 和 application 目录都应该放置在 Web 根目录之外,这样它们就不能通过浏览器直接访问。CodeIgniter 默认在每个目录下都包含了一个 .htaccess 文件,用于阻止直接访问,但是最好还是将它们移出能公开访问的地方,防止出现 Web 服务器配置更改或者 .htaccess 文件不被支持这些情况。

(3)配置数据库文件。在application\config\database.php中,一般修改以下内容

          'dsn' => 'mysql:host=localhost;dbname=ci',
                //'hostname' => 'localhost',用pdo时注释掉,下同
	    //'database' => 'ci',
                'username' => 'root',
                'password' => '',
	    'dbdriver' => 'pdo',//默认数据库驱动是mysqli,一般改为pdo对象操作数据库

(4)在config.php中设置默认地址$config[‘base_url’] = ‘http://localhost/CodeIgniter/’;

(5)路由配置在applicaiton\config\routes.php中,
$route[‘default_controller’] = ‘welcome’;//可以修改

4.编写控制器方法和静态页面
例子http://example.com/news/latest/10 有一个叫做 “news” 的控制器,被调用的方法为 “latest” , 这个方法的作用应该是查询 10 条新闻条目并显示在页面上
新建一个文件 application/controllers/Pages.php ,然后添加一个view方法
<?php
class Pages extends CI_Controller {
public function view(KaTeX parse error: Expected '}', got 'EOF' at end of input: …/views/pages/'.page.’.php’)){
show_404();
}

	$data['title'] = ucfirst($page);
	
	$this->load->view('tempates/header', $data);
	$this->load->view('pages/'.$page, $data);
	$this->load->view('tempates/footer', $data);//view() 方法的第二个参数用于向视图传递参数,$data 数组中的每一项将被赋值给一个变量
}
  }

新建两个视图(页面模板)分别作为我们的页脚和页头
新建页头文件 application/views/templates/header.php 并添加以下代码:

CodeIgniter Tutorial
    <h1><?php echo $title; ?></h1>

新建页脚文件application/views/templates/footer.php ,然后添加以下代码:
© 2015

解释: 标签告诉浏览器把其中的文本表示为强调的内容。对于所有浏览器来说,这意味着要把这段文字用斜体来显示。

静态页面模板位于 application/views/pages/ 目录,在该目录中,再新建两个文件 home.php 和 about.php 内容随便写其中之一比如



Hello CodeIniter!

	<p>Let's start to study CodeIniter now!</p>

</body>
</html>

5.测试页面
控制器现在开始工作了!在你的浏览器中输入 http://localhost/CodeIgniter/index.php/pages/view来查看你的页面。当你访问 在view后面加上/about 时你将看到about 页面,包括页头和页脚。
如果不行有进可以在地址的index.php后加上?,如果提示404错误可能是控制器或页面文件里的文件名或位置错误

6.可以隐藏入口文件index.php,在url总中显示入口文件不太美观,如果要隐藏可以进行如下设置(路由配置文件中也能更方便的设置隐藏)。

(1)服务器配置文件http.conf中开启重写
LoadModule rewrite_module modules/mod_rewrite.so
这条前面不可有#,如果没有这条加上即可

(2)在网站根目录下新建文件.htaccess,属于隐藏文件,可新建文件后另存为时修改名字,

7.创建数据库模型
打开 application/models/ 目录,新建一个文件 News_model.php ,然后写入下面的代码。 确保你的 数据库配置正确

<?php class News_model extends CI_Model { public function __construct() { $this->load->database(); } } 在命令行中建表 CREATE TABLE news ( id int(11) NOT NULL AUTO_INCREMENT, title varchar(128) NOT NULL, slug varchar(128) NOT NULL, text text NOT NULL, PRIMARY KEY (id), KEY slug (slug) ); 插入一些测试数据INSERT INTO `news` (`id`, `title`, `slug`, `text`) VALUES ('1', 'new1', 'hello', 'a shot accident in usa night in yesterday!'); 8.CodeIgniter 的数据库抽象层 查询构造器 , 通过它你可以编写你的查询代码,并在 所有支持的数据库平台 上运行。 向上面的模型类中添加如下代码。 public function get_news($slug = FALSE)//根据slug有无来执行查询所有条目或指定条目 { if ($slug === FALSE) { $query = $this->db->get('news'); return $query->result_array(); } $query = $this->db->get_where('news', array('slug' => $slug)); return $query->row_array(); } 9.现在,查询已经写好了,接下来我们需要将模型绑定到视图上,向用户显示新闻条目了,在application/controllers/News.php 文件中。 class News extends CI_Controller { public function __construct() { parent::__construct();//原因是你的构造函数将会覆盖父类的构造函数,所以我们要手工的调用它。 $this->load->model('news_model'); $this->load->helper('url_helper'); } public function index() { $data['news'] = $this->news_model->get_news(); $data['title'] = 'News archive'; $this->load->view('templates/header', $data); $this->load->view('news/index', $data); $this->load->view('templates/footer'); } public function view($slug = NULL) { $data['news_item'] = $this->news_model->get_news($slug); if (empty($data['news_item'])) { show_404(); } $data['title'] = $data['news_item']['title']; $this->load->view('templates/header', $data); $this->load->view('news/view', $data); $this->load->view('templates/footer'); } } 10.现在你需要创建一个视图文件来 显示新闻条目了,新建 application/views/news/index.php 文件并添加如下代码。

<?php echo $title; ?>

<?php foreach ($news as $
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值