用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的入口文件都大同小异。
以下是一个入口文件的例子:
- <?php
- // 定义ThinkPHP框架路径
- define('THINK_PATH', '../ThinkPHP');
- //定义项目名称,如果不定义,默认为入口文件名称
- define('APP_NAME', 'mvcblog');
- define('APP_PATH', '.');
- // 加载框架公共入口文件
- require(THINK_PATH."/ThinkPHP.php");
- //实例化一个网站应用实例
- $App = new App();
- //应用程序初始化
- $App->run();
- ?>
注释说的很清楚了,我再补充一句,最重要的是第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,接下来,我们要用一件神兵利器,快速进行项目设置。
欲知后事如何,且听下回分解。。。-_-!
- 用ThinkPHP制作简单的MVC-BLOG教程(1)
- 用list_to_tree在ThinkPHP上制作一个简单的菜单功能
- 最简单的github搭建blog教程
- 用Python制作简单的钢琴程序的教程
- asp.net MVC + linq to Entity简单教程(二)MVC的简单操作
- asp.net MVC + linq to Entity简单教程(二)MVC的简单操作
- ThinkPHP的MVC模型笔记1
- ThinkPHP里的MVC
- thinkPHP的MVC框架
- 史上最简单的 Spring MVC 教程(一)
- 史上最简单的 Spring MVC 教程(二)
- 史上最简单的 Spring MVC 教程(三)
- 史上最简单的 Spring MVC 教程(四)
- 史上最简单的 Spring MVC 教程(五)
- 史上最简单的 Spring MVC 教程(六)
- 史上最简单的 Spring MVC 教程(七)
- 史上最简单的 Spring MVC 教程(八)
- 史上最简单的 Spring MVC 教程(九)
- 23种经典设计模式UML类图汇总
- 获取图形对象的属性及选入新的图形对象
- NS2学习笔记(1)
- 正式开通这个空间
- X3D文件中的事件、路由和脚本
- 用ThinkPHP制作简单的MVC-BLOG教程(1)
- 栈(Stack)
- 在线播放代码
- OracleHelper类
- 日常上网要注意的事项
- 20080828 python HelloWorld
- c# 中调用存储过程集
- java ,c# 解决安全沙箱问题
- 在ITPub上发表文章《透析QTP自动化测试框架SAFFRON》