[转]使用ThinkPHP框架快速开发网站(多图)

news/2024/5/20 10:08:34/文章来源:https://blog.csdn.net/weixin_30535843/article/details/97722125

本文转自:http://blog.csdn.net/ruby97/article/details/7574851

这一周一直忙于做实验室的网站,基本功能算是完成了。比较有收获的是大概了解了ThinkPHP框架。写一些东西留作纪念吧。如果对于同样是Web方面新手的你有一丝丝帮助,那就更好了挖。

       以前用PHP做过一个很蹩脚的网站,为什么这么说呢,因为写的全是死代码。做完以后觉得实在是累,前端要div+css,js 后端要php,mysql,这么多东西要弄,十分头疼。所以,在接到做网站的任务后,我第一时间想到一定要使用开发框架去做,绝不能跟以前一样那么累了。

       我选择的是PHP的ThinkPHP框架。说实话,真的蛮不错的。瞬间觉得Web开发还是蛮有效率的。

       超级链接:ThinkPHP中文网

 

按照套路,首先贴一下实验环境:

 

  • 1.    WAMP(集成的那种,最Easy的几乎不需要配置)
  • 2.    ZendStudio7.2(中文网址http://www.zendstudio.net/,里面提供下载,在线注册机以及使用教程)
  • 3.    ThinkPHP框架+百度UEditor编辑器插件
  • 4.    Win7-64bit操作系统
  • 5.    浏览器(火狐,IE,Chrome),外加火狐FireBug插件用于调试以及偷样式

 

 

 

-------------------------------------------------------------华丽分割-------------------------------------------------------------

 

 

 

第一步:找网页模板(不会美工,PS,见谅。。)

 

       前端页面我找的是一个大学的实验室,这里就不贴了,很普通的那种。后台直接下载的模板,感觉蛮漂亮的,运行后如下图:

 

 

第二步:初识百度UEditor插件

由于我要做的是实验室的网站。实验室网站主要内容在如下几个方面:

 

  • 介绍实验室的成员
  • 实验室的项目,成果等
  • 实验室的新闻以及学术交流信息

 

 

可见,信息主要偏重于后台的新闻,文章信息的发布,而前台几乎不存在编辑。所以重点要在后台实现一个方便的文章发布体系

我选用了百度出品的UEditor所见即所得编辑器。主要是JS实现的,整合到后台后如下所示,功能真的很多哇:

 

关于UEditor的如何整合到网站中,请参考UEditor的官网,里面有详细教程。

 

 

第三步:初识ThinkPHP框架

 

下面开始介绍ThinkPHP框架,首先为了加强感性认识,先看一看ThinkPHP工程的目录结构:

 

文件夹:

 

  • admin是后台工程文件夹
  • home是前台工程
  • public里面用于存放CSS文件,JS文件以及网页里面的图片
  • ThinkPHP框架
  • ueditor是百度编辑器

 

 

下面三个PHP文件:

 

  • admin.php是后台工程的入口文件,
  • index.php是前台工程的入口文件。
  • config.inc.php,由于这个小项目的几乎所有数据都放在数据库里,而前后台都要连接数据库,所以所有的数据库配置代码放在了它里面。

 

 而剩下的buildpath ,.settings , .project 是Zend IDE生成的,不管它们。

 

------------------------------------------------------华丽分割-------------------------------------------------------------

 

 

由于我这里面实际是两个工程(home和admin),只要理解其中一个即可,故下面只介绍后台,即admin部分

 

接着往下看,看一下admin.php文件,这是需要了解的第一个文件,即后台的入口文件

 

 

几个宏定义分别指明了:

 

 

  • 1.    ThinkPHP框架的路径
  • 2.    后台应用程序目录
  • 3.    后台应用程序名称
  • 4.    开启调试模式
  • 5.    包含ThinkPHP框架下的ThinkPHP.php文件(重要!

 

 

下面新建一个小工程来演示一下开发过程:

比如整个工程的大目录是xxx,然后把ThinkPHP框架拷贝进来,并添加admin.php文件(如上图中的代码)

 

 

此时在浏览器里面输入:http://localhost/xxx/admin.php自动生成admin目录,如下图

 

 

打开admin目录,内容如下:

 

其中主要关注四个文件夹:

1.    Conf 存放工程配置文件(比如定义一些常量什么的)

2.    Lib   (最重要!存放MVC模式中的模型类和控制器类)

3.    Tpl(存放模板文件,按道理前面我们下载的模板应该放在这里)

4.    Runtime(存放运行时文件,比如缓存啊,数据库表缓存什么的)

 

最后贴出浏览器上的运行结果。。对不起贴的有点晚。

 

 

如果能看到上面的画面,说明ThinkPHP可以正常运行啦。下面我们继续完善吧。

 

------------------------------------------------------------华丽分割-----------------------------------------------------

 

 

第四步:初识MVC模式

 

到这里,不得不提一下在ThinkPHP中的MVC的概念。MVC很有名,叫做模型-视图-控制器模式。

 

在ThinkPHP里面:

模型(Model)可以认为就是一张数据库表。那我做的工程来说:

对于一篇文章(新闻),它的属性包括ID号,标题,作者,创建时间,最后修改时间以及文章内容。这就是一篇文章的模型。然后就按照这个思路建立对应的数据库表:

 

 

视图(View)可以认为就是用户看到的东西,即模板,或者说皮肤。

比如前面贴出的后台模板,那个在ThinkPHP概念中就是视图。

 

控制器(Action)可以认为是视图与模型之前的桥梁。因为网站上显示的内容基本全部来自众多模型们(数据库表们),而控制器负责的就是决定在哪些情况下显示哪些模型里面的哪些数据。还是拿我的例子说,我后台工程的首页对应的控制器是Index控制器。(Index控制器为所有工程的默认控制器)。但是你想,一个网站的首页一般是有很多按钮啊,超链接啊什么的,可以跳到其他地方去的东西。贴张图:

 

这是我的后台首页。可以看到左边有导航栏,右下边列出了数据库当前的文章信息,可以看到一共有三篇文章。比如我现在可能想做:

 

1.    把文章”1111测试文章发布系统”删除

2.    把文章”詹姆斯高捧第3座MVP奖杯”改成”詹姆斯高捧第4座MVP奖杯”

3.    新添加一篇别的文章

 

这就对应了Index控制器的不同功能了,也就是Index控制器类IndexAction的不同方法(比如取名edit()方法,delete()方法,add()方法)。当然之所以会看到页面显示,是因为默认情况下执行Index控制器的Index()方法,在该方法中调用display()方法显示模板(视图)。不信可以看默认的文件,里面的Index控制器的Index方法实现的就是HelloThinkPHP的欢迎页面。

 

比如:

IndexAction目录为:

/xxx/admin/Lib/Action/IndexAction.class.php

内容为:

 

可以看到,默认情况下在index方法中调用了$this->display()  

(注意看IndexAction 继承Action类,display方法是Action类的方法);

调用display()方法后,ThinkPHP会在对应工程的Tpl文件夹下的Index文件下下找index.html文件。其中前一个Index文件夹对应的是Index控制器,index.html对应的是index()方法。

所以,一个控制器类对应一个模板文件夹。具体对应多少个模板跟控制器类有多少个方法以及有多少个方法需要display有关。

故,此时对应的模板文件路径为:

/xxx/admin/Tpl/Index/index.html

 

 

细心的朋友可能要问了,你这里只说了视图(模板)和控制器啊,模型呢?你是怎么知道数据库里的那三篇文章的信息的呢?其实不然,我在index方法里面还做了一些事情,下图是精简版index方法:

 

可以看到,第一步,我就实例化了一个模型。模型名字是Article,前面说到模型就是数据库表,此时查看一下有哪些数据库表:

 

第一个表名字是think_article,可以看到还差一个前缀think_,其实这个是在配置文件中指定的,还记得前文所述的config.inc.php吗? 其配置代码如下所示:

 

<?php

return array(

     'DB_TYPE'              =>'mysql',

     'DB_HOST'             =>'localhost',

     'DB_NAME'            =>数据库名字,

     'DB_USER'             =>用户名,

     'DB_PWD'              =>密码,

     'DB_PORT'             =>'3306',

     'DB_PREFIX'           =>'think_',

);

?>

 

第二条语句就是查询数据库。ThinkPHP提供了很多种查询数据库的方法,我使用的是连贯操作法。

执行完第二条语句后$new_list变量就存储了所有文章的信息,那么怎么把它显示到界面上去呢?

 

看第三句话,它把该变量分配给了一个叫做’new_list’的变量  (好像同名了哇。。不过没关系,关键是assign方法),然后我们在模板文件里面进行替换就OK啦。默认情况下,在HTML里面写 {$new_list}就OK啦。当然,这里面的new_list是一个复合的变量,不是单纯的数字或者字符串。。不过ThinkPHP提供了很多循环的方法给我们使用,很是方便。

 

最后一条语句就是显示对应的视图文件了。我们就能把数据库中的文章信息按照视图(模板)里面定义的规则显示在浏览器中了。

 

---------------------------------------------------------------华丽分割-----------------------------------------------------------

 

源码下载

最后给出示例工程xxx的源码。有需要的朋友可以下载,可以很快的了解ThinkPHP的大概原理。

 

源码功能:

 

  • 1.后台管理员登陆
  • 2.添加文章,编辑文章,删除文章
  • 3.前台显示文章

 

使用方法:

 

  • 1.解压到网站根目录下,默认是www文件夹下的xxx文件夹

 

 

 

 

  • 2.在MySQL中新建一个数据库,比如rubydb,整理成utf8-genaral-ci

 

 

 

  • 3.导入数据库表文件夹下的两个数据库表 think_article  和think_user,导入后入下图:

 

 

 

 

  • 4.配置Config.inc.php文件

 

 

 

[php] view plaincopyprint?
  1. <span style="font-size: 16px;"><?php   
  2. return array(  
  3.     'DB_TYPE'           =>   'mysql',  
  4.     'DB_HOST'           =>   'localhost',  
  5.     'DB_NAME'           =>   '自己建一个数据库',//需要新建一个数据库!名字叫  
  6.     'DB_USER'           =>   '你的数据库用户名',     //数据库用户名      
  7.     'DB_PWD'            =>   '你的数据库密码',//数据库登录密码  
  8.     'DB_PORT'           =>   '3306',  
  9.     'DB_PREFIX'     <span style="white-space: pre;">    </span>=>    'think_',//数据库表名前缀  
  10. );  
  11. ?></span>  
<?php 
return array('DB_TYPE'			=>	'mysql','DB_HOST'			=>	'localhost','DB_NAME'			=>	'自己建一个数据库',//需要新建一个数据库!名字叫'DB_USER'			=>	'你的数据库用户名',		//数据库用户名	'DB_PWD'			=>	'你的数据库密码',//数据库登录密码'DB_PORT'			=>	'3306','DB_PREFIX'		=>	'think_',//数据库表名前缀
);
?>

可见,上面的DB_NAME,DB_USER,DB_PWD需要修改

 

分别是 

'DB_NAME'=>'rubydb' ,

'DB_USER'  =>'你的mysql登录账号' ,

'DB_PWD'   =>'你的mysql登录密码'

 

 

  • 5.运行 http://localhost/xxx/admin.php,弹出后台登录页面:

 

 

输入数据库think_user里面的用户信息: ruby97,密码ruby97  ,再输入验证码即可登录。

 

 

选择写新闻按钮自己添加一篇文章。然后到http://localhost/xxx下面看结果吧!

 

 

源码下载链接

 

 

 

 

转载于:https://www.cnblogs.com/freeliver54/p/3621452.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_712892.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《大型网站技术架构》读书笔记[3] - 架构核心五要素

架构设计中要考虑的核心五要素&#xff1b; 性能、可用性、扩展性、伸缩性、安全性 性能 性能的测试指标 响应时间 应用执行一个操作需要的时间&#xff0c;包括从发出请求开始到收到最后响应数据所需要的时间。响应时间是系统最重要的性能指标&#xff0c;直观地反映了系统的“…

java抓取网页数据_Golang丨Java丨Python爬虫实战—Boss直聘网站数据抓取

我们分别通过Golang、Python、Java三门语言&#xff0c;分别实现对Boss直聘网站的招聘数据进行爬取。首先打开Boss直聘网站&#xff1a;然后我们在职位类型中输入Go或者Golang关键字&#xff1a;然后我们可以看到一个列表&#xff0c;和Go语言相关的各种招聘职位&#xff0c;还…

我的网站被黑了,关键词被劫持,总结一下是怎么解决的。

1、发现被黑&#xff0c;网站被黑的症状 两年前自己用wordpress搭了一个网站&#xff0c;平时没事写写文章玩玩。但是前些日子&#xff0c;突然发现网站的流量突然变小&#xff0c;site了一下百度收录&#xff0c;发现出了大问题&#xff0c;网站被黑了。大多数百度抓取收录的页…

一个大图切成几个小图加载速度更快_谷歌SEO页面速度的重要性

什么是页面速度&#xff1f;页面速度是指网页加载所需的时间。一个页面的加载速度是由几个不同的因素决定的&#xff0c;包括网站的服务器、页面文件大小和图片压缩。也就是说&#xff0c;"页面速度 "并不像 "网页速度 "那么重要。"页面速度 "并…

大学计算机思维导图_3款免费在线思维导图网站,你一定要收藏一个!

1&#xff1a;迅捷画图https://www.liuchengtu.com/迅捷画图是一个专业的思维导图、流程图制作网站。支持在线创作流程图、思维导图、组织结构、ER图、网络拓扑图、UML图等等。接下来说说特色&#xff1a;l 支持导出多种格式&#xff0c;如JPG、PNG、PDF文件、txt文本等格式l 提…

python中data.find_all爬取网站为空列表_利用Golang快速爬取盗版网站的整套音频

01前言最近因为 Zigma 帮我写了个推广 Catcher 小程序软文的原因&#xff0c;答应了他帮他爬了一个盗版音频网站的整套 《李淼谈奇案》 。在制作爬虫脚本的过程中&#xff0c;也是遇到了一些有趣的问题&#xff0c;所以特此写了这篇 Blog 用于记录脚本的整一个实现与问题解决。…

java web 项目伪静态_【Java Web】使用URLRewrite实现网站伪静态

大部分搜索引擎都会优先考虑收录静态的HTML页面&#xff0c;而不是动态的*.jsp、*.php页面。但实际上绝大部分网站都是动态的&#xff0c;不可能全部是静态的HTML页面&#xff0c;因此互联网上大部分网站都会考虑伪静态——就是将*.jsp、*.php这种动态URL伪装成静态的HTML页面。…

网站html静态化 教程,新云CMS网站内容管理系统生成HTML静态化教程

网站静态化一直是SEO重点关注对象。静态化有好有坏&#xff0c;最大的好处是收录迅速&#xff0c;坏处是纯静态的HTML页面难以维护&#xff0c;特别是对于大型的网站。本文将介绍如何将新云CMS网站管理系统静态化。html本文以新云CMS 3.0为例。动画1.进入后台控制面板&#xff…

ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(四) 添加表情、群聊功能...

休息了两天&#xff0c;还是决定把这个尾巴给收了。本篇是最后一篇&#xff0c;也算是草草收尾吧。今天要加上表情功能和群聊。基本上就差不多了&#xff0c;其他功能&#xff0c;读者可以自行扩展或者优化。至于我写的代码方面&#xff0c;自己也没去重构。好的&#xff0c;我…

苹果cms mysql 什么版本_分享如何使用阿里云ECS快速搭建CMS网站

想建网站又不会编程的小伙伴有福啦&#xff0c;本期推荐一些开源的cms建站程序&#xff0c;不需要写后端的任何逻辑代码&#xff0c;轻轻松松就可以建立自己的网站了&#xff0c;当然&#xff0c;要想网站有自己的个性&#xff0c;模版还是需要自己写的&#xff0c;只需要会简单…

关于大型网站技术演进的思考(一)--存储的瓶颈(1)

前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训&#xff0c;两天12个小时信息量非常大&#xff0c;知识的广度和难度也非常大&#xff0c;培训完后我很难完整理出全部听到的知识&#xff0c;今天我换了个思路是回味这次培训&#xff0c;这个思路就是通…

动易html在线编辑器 漏洞,动易系统解决IE8网站后台编辑器无效问题

微软的IE8正式版已于2009年3月20日正式发布了&#xff0c;也有不少的动易用户升级了自己的浏览器&#xff0c;但在升级后都发现动易的后台编辑器无法使用了&#xff0c;症状就是点击任何功能图标都没有弹出设置窗口&#xff0c;经过搜索了一下&#xff0c;终于找到了解决IE8下无…

seo 伪原创_seo文章优化(怎么样做好伪原创文章)

在seo网站优化行业中有很大一部分的站点都是以做内容为主&#xff0c;做内容的重点就是写文章&#xff0c;因为很多在搜索引擎中的排名都是靠文章的&#xff0c;那么我们就要着重做好文章&#xff0c;目前还是有很大一部分在做文章的步骤中的问题很大&#xff0c;就是因为没有掌…

apache 网站转nginx_堡塔网站加速宝塔面板网站加速安装设置使用教程

堡塔网站加速是宝塔面板为用户开发的一款网站加速插件&#xff0c;基于页面缓存的网站加速插件&#xff0c;支持常见的众多建站程序加速。其原理是在http协议层缓存动态页面&#xff0c;对实时信息及已登录的会话跳出缓存&#xff0c;此技术主要针对匿名访问的用户进行加速响应…

java音乐网站源码_Vue + SpringBoot + MyBatis 音乐网站

一、前言这里对音乐网站这个项目的开发流程做一下描述&#xff0c;我觉得了解了具体实现的来龙去脉&#xff0c;上手自己做就容易得多了&#xff0c;要知道数据是怎么从数据库一步步跑到前端页面的&#xff0c;当知道了整个的流程再去处理中间的细节&#xff0c;具体实现的细节…

网站导航颜色停留_提高网站流量的方法有哪些?

在做网站SEO推广的时候&#xff0c;网站的访问量是十分重要的一个因素&#xff0c;不仅仅是对网站&#xff0c;对搜索引擎来说也是评价网站级别重要的一个参考因素。那么&#xff0c;提升网站流量的方法有哪些&#xff1f;接下来蜘蛛池博客小编就跟大家分享下提升网站流量的方法…

网站能ping通 但是打不开_SEO网站建设的三要素:域名、空间、网站程序

域名的选择&#xff1a;好域名和短域名对权重影响&#xff1a;好的域名更容易让用户记住你&#xff0c;提高用户回头率。域名的长短影响对SEO没有任何影响&#xff0c;只是短的域名更容易被人记住。另外市面上出现了很多的中文域名&#xff0c;不建议使用中文域名&#xff0c;因…

在线计算机 授课,在线计算机教育网站计蒜客改版 推出算法竞赛课程

【赛迪网讯】4月16日消息&#xff0c;近日&#xff0c;新型在线计算教育平台计蒜客进行了重大改版&#xff0c;网站从底层架构到课程内容都进行了大幅调整。计蒜客新版除了服务速度和稳定性大幅提升外&#xff0c;还对用户的学习体验进行了优化&#xff1b;同时&#xff0c;计蒜…

浅谈web网站架构演变过程

前言 我们以javaweb为例&#xff0c;来搭建一个简单的电商系统&#xff0c;看看这个系统可以如何一步步演变。该系统具备的功能&#xff1a;用户模块&#xff1a;用户注册和管理商品模块&#xff1a;商品展示和管理交易模块&#xff1a;创建交易和管理阶段一、单机构建网站 网站…

在你的网站中使用 AdSense广告

下面介绍了如何使用Google的AdSense来为你的网站设置广告。基本内容包括&#xff1a; 创建一个AdSense账号&#xff0c;你必须18岁以上&#xff0c;有一个Google账号以及地址 你的网站必须已经被激活&#xff0c;并且你的网站内容必须符合AdSense政策 创建响应式布局广告单元&a…