用ThinkPHP制作简单的MVC-BLOG教程(1)

来源:互联网 发布:手机版收音机不用网络 编辑:程序博客网 时间:2024/06/17 05:16

开篇词:

最近国内各框架开张的不错,ThinkPHP和FleaPHP都各有千秋,吸引很多初学者急于学习框架开发,但是又对使用框架开发摸不着头脑,一头雾水。

所以,现在,我以TP为核心,以连载的形式,首先一步一步的和大家一起做一个最简单的采用MVC三成架构的BLOG。然后再一点一点完善这个BLOG,加入更多功能,从而把众多框架初学者带入框架的殿堂,TP的殿堂。呵呵。

第一章:初识ThinkPHP

http://www.thinkphp.cn 是TP的官网,打开首页映入眼帘的是TP的一些特性。其实,用了一年多的TP,我自己总结,TP就是能够把程序员从繁复的代码编写中解救出来,让程序员更专注于业务逻辑的实现,用更少的代码量实现更多的功能。

目前,TP官网提供3个版本下载,分别为1.0.4稳定版(包含核心包和完整包),1.0.5测试版以及0.9.9测试版,0.9.9测试版主要为了兼容PHP4。

还有一种获得TP的途径,就是通过SVN下载,这也是我最推崇的一种获得方式。通过SVN下载到的是TP的最新版本,提供更多的功能和更好的性能,同时,也能在第一时间更新已知BUG,及时升级。

我们的目的是快速搭建一个MVC-BLOG,所以有关TP执行流程之类的就暂时不说,如果大家感兴趣,可以下载PDF版本和在线浏览SWF版本

创建项目的第一步,我们要有一个入口文件index.php,其实,我们对项目的所有操作,都是访问这个index.php,从而叫作入口文件,入口文件有什么作用呢,简单的说,就是根据URL给入口文件传递的参数,引导用户访问哪个ACTION,从而显示页面或者处理数据。

如果没有什么特殊设置,TP的入口文件都大同小异。

以下是一个入口文件的例子:

  1. <?php
  2. // 定义ThinkPHP框架路径
  3. define('THINK_PATH''../ThinkPHP');
  4. //定义项目名称,如果不定义,默认为入口文件名称
  5. define('APP_NAME''mvcblog');
  6. define('APP_PATH''.');
  7. // 加载框架公共入口文件
  8. require(THINK_PATH."/ThinkPHP.php");
  9. //实例化一个网站应用实例
  10. $App = new App();
  11. //应用程序初始化
  12. $App->run();
  13. ?>

注释说的很清楚了,我再补充一句,最重要的是第5行,定义了一个APP_NAME就是入口文件的名称,可以把文中的“mvcblog"换成你想要的名称,最好是无符号英文。

那我们的index.php应该放到哪呢?

================================

|---ThinkPHP TP核心文件目录

|---mvcblog 项目目录

================================

请注意,我在与TP核心文件目录的平级建立了一个test目录,没错,我们的入口文件就是要放在test目录下。需要注意的是,项目目录的文件夹名称一定要与APP_NAME定义的项目名称一致。

接下来,访问mvcblog文件夹下入口文件,你会见到一句话“^_^ Hello,欢迎使用ThinkPHP

当你看到这句话的时候,告诉你一个好消息,所有的项目目录,TP已经自动为你布置好了,快去mvcblog文件夹下看看都有什么变化吧!

可以看到,目录下除了index.php,居然又生成了9个新的目录,这些目录都是干什么的呢?

还是那句话,我们先不管,继续我们的MVC-BLOG,当写完这个BLOG,你就一定能明白了。

好,现在来设计我们的BLOG数据库;

关于数据库设计,我是这么想的,为了以后给大家将手RBAC在TP中的应用,现在这个BLOG就先不设计用户权限管理,我们就不设计USER表了,登陆的时候直接在PHP文件里验证。等之后用RBAC的时候,就知道TP的用户权限管理是多么的简单。呵呵。

好,回归正题

由于功能是一点一点增加的,所以我们先设计最简单的几个表。

文章标题表、分类表、文章内容表,现在就先简单的这3个表。

其中文章标题表包括标题ID、标题、创建时间、标题排序。

内容表包括内容ID、对应的标题ID,内容。

分类表,我们暂时不考虑多及分类,所以,分类表仅仅包括分类ID、分类名称、分类排序。

最后,写SQL建库表

/*
MySQL Data Transfer
Source Host: localhost
Source Database: mvcblog
Target Host: localhost
Target Database: mvcblog
Date: 2008-8-28 22:09:42
*/

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for mvcblog_cate
-- ----------------------------
CREATE TABLE `mvcblog_cate` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(64) collate utf8_bin default NULL,
  `order` int(11) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
-- Table structure for mvcblog_content
-- ----------------------------
CREATE TABLE `mvcblog_content` (
  `id` int(11) NOT NULL auto_increment,
  `title_id` int(11) default NULL,
  `content` text collate utf8_bin,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
-- Table structure for mvcblog_title
-- ----------------------------
CREATE TABLE `mvcblog_title` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(128) collate utf8_bin default NULL,
  `createtime` int(11) default NULL,
  `order` int(11) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
-- Records
-- ----------------------------
好,现在我们的数据库已经设计结束,根基已经OK,接下来,我们要用一件神兵利器,快速进行项目设置。

欲知后事如何,且听下回分解。。。-_-!

原创粉丝点击