首页 > 范文大全 > 正文

基于PHP CodeIgniter框架的CMS系统开发

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于PHP CodeIgniter框架的CMS系统开发范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

基于php codeigniter框架cms系统开发

丁善磊

河南省濮阳市电子计算机技术开发中心,河南濮阳 457000

摘要 本文通过介绍CodeIgniter(以下简写为CI)框架,并简单介绍了利用该框架进行典型CMS之新闻系统开发过程,旨在说明CI是一个可供PHP网站开发者使用的轻便、功能强大的PHP开发框架。使用CI可以大大减少代码的编写量,这使得开发者可将主要的精力投入到项目的创造性开发上,利用CI更快速地进行PHP网站项目的开发。

关键词 网站开发;CMS;PHP框架;CodeIgniter

中图分类号TP39 文献标识码A 文章编号 1674-6708(2012)81-0219-02

CI是一个简单快速的PHP MVC框架,是美国EllisLab公司的产品。PHP开发者都知道,PHP的开发框架有许多,常见的有ThinkPHP、CanPHP、CakePHP、SpeedPHP等,笔者使用过ThinkPHP和CakePHP,但都不如CI使用起来得心应手,总体感觉CI更为简单,功能却不失强大。说CI简单,一是CI代码量少,目前最新版本2.3仅为2.21M,其中包括1.3M用户说明文档。

二是移植起来简单,它在PHP4和PHP5中都得到了很好的支持。

三是开发者可以自由选择是否使用模板引擎来创建视图,一般情况我们只需按照原来的习惯,混编HTML和PHP而形成模板文件。

1 CI的特点

CI的主要特点有:CI是开源的,免费的。CI是经过Apache/BSD-style开源许可授权的,可以无偿使用而无需支付任何使用费用。

CI是轻量级的。CI的核心只需要很少的库文件支持,额外的库文件只需在请求的时候加载,所以核心系统运行起来是既快又轻。CI运行速度快。虽然CI与其它PHP框架一样也使用M-V-C模型方法,但CI的运行速度更快。CI生成的URL干净而且是对搜索引擎友好。

CI功能强大。CI拥有大量的类库,包括:数据库读写类、电子邮件类、session类、图片操作类等,可以满足大多数网络开发任务需要。另外还有经常用到的日历类、Email类、文件上传类、表单验证类、FTP类、HTML表格类、图像处理类、语言类、分页类、Session类、数据库类等,甚至还有购物车类、众多的辅助函数等等供开发人员使用,这些类和函数在开发手册都有使用范例,可以很容易地使用。

CI可扩展性好。通过自定义类库、辅助函数来进行扩展,或者通过扩展类、系统钩子来实现扩展。CI可脱离模板引擎。CI自带有模板解析程序,通常情况下仍使用HTML和PHP混编模板。

2 CI的安装过程

CI的安装过程非常简单。CI安装分为四个步骤:

第一步,解压缩安装包。安装包解压后的结构是这样的:/application,用来放置应用程序,/system是CI的核心文件,/user_guide则是用户使用说明文档,index.php是网站入口文件,license.txt是使用许可协议文件。

第二步,将解压后的文件上传至支持PHP环境的服务器,/User_guide是用户说明文档,无需上传。

第三步,打开application/config文件下的config.php文件,这个文件是设置网站项目的配置信息,如网站的根URL,Session的加密等。

第四步,打开application/config文件下的 database.php文件,进行数据库连接参数的设置。这一点在随后的开发中还会详细介绍。

出于网站系统安全考虑,可以通过隐藏CI文件的位置来增加安全性。

比如,可以修改system和application目录的名字,把它改成任何你想改的。如果名字进行了修改,则必须打开主目录下面的index.php文件设置里面的$system_path和$application_folder变量,把它设成你修改后的名字。

更好的保证系统安全的方法是,将system和application两个文件夹放到网站根目录以外的地方,这也是很多网站系统采用的方法。如果移动了以上两个文件夹,则必须打开主目录下的index.php文件并编辑$system_path和$application_folder两个变量,最好使用绝对路径进行替换。

另外需要注意的是,一是在默认设置下,CI在每个文件夹中都有一个.htaccess配置文件以拒绝直接访问,当把代码部署到实际环境时最好移除之,因为生成环境的web服务可能会改变或不支持.htaccess的配置。因此在系统交付使用时,要关闭PHP的错误报告以及其他任何与开发时有关的功能,做到这一点在CI中只需设置ENVIRONMENT常量即可。

3 新闻系统开发的简要过程

新闻系统的简单构成:网站首页index.php,一般包括页头header、页脚footer和主体,主体一般包括最新文章、推荐文章以及其他的BOX;然后是文章列表页category.php,用来显示每个分类下的文章列表,然后是文章内容页content.php,显示文章的具体内容。

首先我们来创建一个控制器,这是网站开发的第一步。使用Dreamweaver或其它文本编辑器,创建一个名为news.php的文件,文件的位置在/application/controllers下,代码如下:

Class News extends CI_Controller{

Public function index()

{

$data[‘title’] = ‘Welcome to My News Site.’;

$data[‘sitename’] = ‘My News Site’;

$this->load->view(‘index_view’,$data);

}

}

?>

代码一目了然,定义了一个News类,注意类名第一个字母一定要大写。

接下来第一个过程是自建过程,用来初始化类。因为是首页,所以建一个index的方法,用来载入首页视图文件index_view.php,此文件一般放在/application/view/templates文件夹下,当网站被访问的时候,CI会加载默认控制器。控制器可以向视图文件传递变量,我们这里定义了一个数组,一个变量是页面标题,一个是站点名称。在视图文件里,直接使用$title、$sitename即可。

视图文件index_view.php代码如下:

var _gaq = _gaq || [];_gaq.push(['_setAccount', 'UA-22575914-1']);_gaq.push(['_setDomainName', '']);_gaq.push(['_trackPageview']);(function () {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'www') + '/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();var _userid = '';var _siteid =708;var _istoken = 1;var _model = 'Model03'; WebPageSpeed =578; UrchinTrack();

然后我们打开application/config文件夹下的routes.php文件进行默认控制器的设置。比如本例,我们指定News为默认控制器:

$route['default_controller']='news';

这时,如果是在本机操作,在浏览器地址栏输入localhost或者127.0.0.1,就会打开装载的视图文件index_view.php。网页将显示” My News Site”字样。

开发CMS必然要用到数据库,CI与Mysql结合得也很好。就本例来讲,我们创建一个名为news的数据库,再建立两个表,一个是文章类别表category,一个是文章内容表article。数据库建好后,需要在配置文件中进行数据库的连接设置。打开application/config/文件夹下的database.php文件,这里假如你的数据库连接名和密码都是root,配置信息如下:

$db['default']['hostname'] = 'localhost';

$db['default']['username'] = 'root';

$db['default']['password'] = 'root';

$db['default']['database'] = 'news';

这样就可以连接数据库了,当然开发者可根据自己的情况进行其它数据库信息的配置。

接下来,我们需要写一个模型,命名为News_model,网站要完成的逻辑功能函数一般都在模型里编写,比如对数据库的CRUD(Creat、Read、Update、Delete)操作,我们在/application/model/下新建一个news_model.php文件,代码如下:

Class News_model extends CI_Model{

Function query($tableName)

{

$this->db->where('字段名','字段值');

$this->db->select('字段');

$query=?$this->db->get($tableName );

Return $query->result();

$this->db->insert($tableName,$data);

}

Function update ($tableName,$data)

{

$this->db->where('字段名','字段值');

$this->db->update($tableName,$data);

}

Function delete($tableName){

$this->db->where('字段名','字段值');

$this->db->delete($tableName);

}

}

在模型里定义的方法(过程)可以在控制器里直接调用。我们把控制器作如下修改,以调用数据库。

Class News extends CI_Controller{

function__construct()

{

$this->load->model(‘News_model’);

}

Public function index()

{

$data[‘title’] = ‘Welcome to My News Site.’;

$data[‘sitename’] = ‘My News Site’;

$data = $this->model->query(‘article’);

$this->load->view(‘index_view’,$data);

}

}

?>

这里我们在初始化控制器类的时候装载了模型,CI还可以自动载入模型。方法是打开application/config文件夹下的autoload.php文件,找到并设置$autoload['model'] = array(‘News_model‘)。

需要说明的是,自动加载和手动载入模型对内存的消耗是一样的。除非非常必要,一般尽量不要自动加载模型。当然,对于贯穿整个项目的模型自动加载会省却很多的书写代码。

由于调用了数据库,视图文件index_view.php也要做相应的修改,请注意对数据库部分的显示:

新闻列表

foreach($data[‘news’] as $rows){

echo ‘’ . $rows[‘title’] . ‘’ ;

endforeach;

}

?>

var _gaq = _gaq || [];_gaq.push(['_setAccount', 'UA-22575914-1']);_gaq.push(['_setDomainName', '']);_gaq.push(['_trackPageview']);(function () {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'www') + '/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();var _userid = '';var _siteid =708;var _istoken = 1;var _model = 'Model03'; WebPageSpeed =578; UrchinTrack();

接下来还需编写文章列表页和内容页的代码,它们与首页视图文件index_view.php相似。当然一个新闻系统所需要的完整功能还有很多,比如用户和用户权限功能等等,欢迎读者与笔者联系,一起探讨使用CI过程中遇到的各种问题,共同提高运用CI框架开发CMS系统的水平。

4 结论

本文简单介绍了利用一个轻量级PHP框架CI开发常见CMS系统——简单新闻系统的开发过程,用CI框架进行更为复杂的CMS系统开发原理是一样的,总之,CI的确是一个优秀的PHP网站系统开发框架。

参考文献

[1]CodeIgniter官方网站.网址:http://.

[2]CodeIgniter中文站.网址:http://.cn.