从这里开始,我们要研究下 PHP 的框架,研究的对象就是 CodeIgniter。为什么选 CodeIgniter 研究?因为它小巧,快速,流行,比较容易看清 PHP 框架的本质。
框架最重要的一个文件为入口文件,基本上相当于一个总控开关,所有的请求都需要经过这个文件。这个文件就是 index.php(下面只选取部分关键代码,后同):
<?php $system_path = 'system'; // 应用路径 $application_folder = 'application'; // 控制器路径 define('BASEPATH', str_replace("\\", "/", $system_path)); require_once BASEPATH.'core/CodeIgniter.php'; ?>
导入的 CodeIgniter.php 这个文件的作用是,检查环境,将控制权交给框架。
一个MVC的应用,所有的请求都必须经过控制器,所以下面我们来编写一个比较简单的控制器:
class NowaMagic extends CI_Controller { public function index() { echo 'Welcome to www.nowamagic.net'; } }
模型是专门用来和数据库打交道的PHP类。例如,假设你想用CodeIgniter来做一个Blog。你可以写一个模型类,里面包含插入、更新、删除Blog数据的方法。
如何使用模型呢?实际上非常简单。
class Blog_Model extends CI_Model { function __construct() { parent::__construct(); } function insert() { $this->db->insert('entries', $this); } }
原理和控制器一样,也是继承框架的类,然后自定义方法,这个地方的方法名没有限制,可以随意。
那么编写模型之后怎么在控制器中调用呢,其实方法就是在控制器中实例化这个模型类,然后调用相应的方法即可,所以修改刚才这个控制器的类:
class NowaMagic extends CI_Controller { public function index() { $this->load->model('Blog_Model'); $this->Blog_Model->insert(); } }
为什么这里没有 include 语句呢?那是因为框架帮你做完了这一切,当然,框架不是万能的,当你比较熟悉之后,也可以选择不使用自动导入。
刚才我们所做的一切都没有View,那么怎么编写View呢,实际上就是一个HTML文件,框架在View这一层一般是实现标签库,标签库帮你完成一些原来需要用PHP代码才能完成的事情,比如循环遍历,没有标签库可能你就只能在这个View的文件中使用<?php foreach(.....) ?>,这样对于代码分离很不好。
我们知道所有的请求都必须要通过控制器,所以外部是无法直接访问这个视图文件的。如果要到达某个 view,需要在控制器里面加入一些语句:
class NowaMagic extends CI_Controller { public function index() { echo 'Welcome to www.nowamagic.net'; $this->load->view('index'); } }
好了,这就是 CodeIgniter 的初步入门与大概情况,不是很难吧。
现代魔法 推荐于 2013-02-27 10:23