thinkphp框架基本用法

一、简介

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的

与thinkphp框架类似的国外框架还有yii、CodeIgniter(ci)、ZendFramework、yaf、phalcon、laravel

官方下载网址:www.thinkphp.cn

==说明:ThinkPHP5~版本对应PHP7版本,那么我们使用PHP5版本,需下载ThinkPHP3版本,这里我们下载ThinkPHP 3.1.3版本==

MVC模式

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。

视图:视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

模型:模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

控制器:控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。

我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户

单入口

单一入口通常是指一个项目或者应用具有一个统一(但并不一定是唯一)的入口文件,也就是说项目的所有功能操作都是通过这个入口文件进行的,并且往往入口文件是第一步被执行的。

入口的好处是项目整体比较规范,因为同一个入口,往往其不同操作之间具有相同的规则。另外一个方面就是单一入口带来的好处是控制较为灵活,因为拦截方便了,类似如一些权限控制、用户登录方面的判断和操作可以统一处理了。

二、ThinkPHP的创建应用的一般开发流程

ThinkPHP完全开发手册:http://doc.thinkphp.cn/manual/development_process.html

图片.png

1、下载ThinkPHP

下载完成后,解压,将文件里的ThinkPHP文件夹复制,我们在XAMPP/htdocs目录(服务器或者本地web目录)下新建一个文件bookstore文件夹,再将ThinkPHP文件夹拷贝到bookstore文件夹路径下

2、建立单入口文件

这里我们在bookstore路径下建立index.php文件作为前台项目的单入口文件

那么单入口文件里我们写什么内容呢?

默认情况下,我们只需要在该文件中添加一行代码即可:

<?php
    //引入框架核心文件
    require "ThinkPHP/ThinkPHP.php";
?>

我们在bookstore下再建一个Index文件夹,用来存放生成的项目目录结构

那么我们还必须在单入口文件index.php文件中增加项目名称和项目路径,顺便开启调试模式:

<?php
    //开启调试模式:部分做缓存
    define("APP_DEBUG",true);
    //定义项目名=称
    define("APP_NAME","Index");
    //定义项目路径
    define("APP_PATH","Index/");
    //引入框架核心文件
    require "ThinkPHP/ThinkPHP.php";
?>

开启调试模式有什么作用呢,请看
http://doc.thinkphp.cn/manual/debug_mode.html

然后,我们打开浏览器,输入地址并运行

http://localhost/bookstore/

就会看到欢迎页面

图片.png

==注:如果没有出现这个欢迎页面,可将bookstore文件夹的权限修改为可读可写,应用到所有项目中==

出现欢迎页面表示ThinkPHP已经成功执行,这个时候系统已经在bookstore目录下生成了相关目录,并写入了初始Action

图片.png

生成的项目目录结构和系统目录类似,包括:

目录 说明
Common 项目公共文件目录,一般放置公共的js、css、图片等
Conf 项目配置目录,项目所有的配置文件都放在这里
Lang 项目语言包目录(可选,如果不需要多语言支持可删除)
Lib 项目类库目录,放置项目具体代码,包括Action( 行为、控制 C层)、Behavior、Model(模型 M层)、Widget(小插件)
Tpl (V层)项目模板目录,支持模板主题
Runtime 项目运行时目录,包括Cache(模板缓存)、Temp(数据缓存)、Data(数据目录)和Logs(日志文件)子目录,如果存在分组的话,则首先是分组目录。

三、项目前台内容

html代码在bookstore/Index/Tpl文件夹里面写,那么在Tpl下:

首先新建Index目录,用来存放各页面的html文件
再新建Public目录,用来存放各个页面公共的html部分,比如头部和尾部

css、js、images文件夹建在Index/Common下

图片.png

四 C层(控制层)配置

可以利用Lib/Action下系统自动生成的IndexAction.class.php文件,这个文件里面有一个IndexAction类,类里面的方法与我们建的html文件名一一对应,这里我们有5个页面,就要定义5个方法

<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action {
//主页
    public function index(){
        //--------------------------------- 定义变量 -------------------------------------
    //------------------------------ 将变量输出到模板 ----------------------------------
    //----------------------------------- 加载模板 ----------------------------------------
            $this->display();
    }
//登录页
    public function login(){
        $this->display();
    }
//添加图书页 
    public function addbook(){
        $this->display();
    }
//购物车页  
    public function shopcar(){
        $this->display();
    }
//商品详情
    public function bookinfo(){
        $this->display();
    }
}

五 运行(在本地服务器上)

根据路由原则:

http://localhost/bookstore/单入口文件/类名/方法名

首页
http://localhost/bookstore/index.php/Index/index

登录页
http://localhost/bookstore/index.php/Index/login

六 搭建数据库

这里我们在本地数据库localhost/phpmyadmin简单的搭建一个数据库,两个表,一个用来保存用户信息,一个用来保存商品信息

图片.png
图片.png
图片.png
图片.png

七、连接数据库

在Index/Conf/config.php文件中配置

<?php
//项目配置文件
return array(
    //数据库配置信息
    //'配置项'=>'配置值'
    'DB_TYPE'   => 'mysql', // 数据库类型
    'DB_HOST'   => 'localhost', // 服务器地址
    'DB_NAME'   => 'bookstore', // 数据库名
    'DB_USER'   => 'root', // 用户名
    'DB_PWD'    => '', // 密码
    'DB_PORT'   => 3306, // phpmyadmin端口
    'DB_PREFIX' => '', // 数据库表前缀 
);
?>

八、商品列表页(index)数据展示

找到Index/Lib/Action/IndexAction.class.php文件的Index类的index方法(因为我们该页面的路由是http://localhost/bookstore/index.php/Index/index

图片.png

然后html文件里面:

图片.png

结果:

图片.png

九、登录注册页

(一)注册

前台将用户信息发送给后台,后台判断数据库是否有重名,若重名则注册失败

那么这里会用到ThinkPHP的ajax传送数据,前台ajax可以用我们学过的方法都行

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,165评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,503评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,295评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,589评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,439评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,342评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,749评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,397评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,700评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,740评论 2 313
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,523评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,364评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,755评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,024评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,297评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,721评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,918评论 2 336

推荐阅读更多精彩内容