热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ThinkPHP创建应用的一般开发流程及实例

Thinkphp是免费开源的php框架,提供了建站所需要的各种组件,方便用户快速建设部署网站Thinkphp简介:http:thinkphpcnManual16官方完全

Thinkphp是免费开源的php框架,提供了建站所需要的各种组件,方便用户快速建设部署网站.

Thinkphp简介:http://thinkphp.cn/Manual/16

官方完全开发手册:http://thinkphp.cn/Manual

使用 ThinkPHP 创建应用的一般开发流程是:

创建数据库和数据表;(没有数据库操作可略过)

项目命名并创建项目入口文件;

完成项目配置;(无需额外配置可以忽略)

创建控制器类;

创建模型类;(如果只是简单的模型类可以不必创建)

创建模板文件;

运行和调试。

1. 首先在数据库创建一个数据库 demo,表 think_demo,以 MySQL 为例:

  1. CREATE TABLE `think_demo` (   
  2.   `id` int(11) unsigned NOT NULL auto_increment,    
  3.   `title` varchar(255) NOT NULL default '',    
  4.   `content` longtext NOT NULL,    
  5.   PRIMARY KEY  (`id`)    
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;  

2. 创建入口文件

  1. // +---------------------------------------------------------------------- 
  2. // | ThinkPHP [ WE CAN DO IT JUST THINK IT ] 
  3. // +---------------------------------------------------------------------- 
  4. // | Copyright (c) 2009 http://thinkphp.cn All rights reserved. 
  5. // +---------------------------------------------------------------------- 
  6. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) 
  7. // +---------------------------------------------------------------------- 
  8. // | Author: liu21st  
  9. // +---------------------------------------------------------------------- 
  10.  
  11. // 定义 ThinkPHP 框架路径 
  12. define('THINK_PATH''../ThinkPHP'); 
  13. // 定义项目名称和路径 
  14. define('APP_NAME''MyApp'); 
  15. define('APP_PATH''.'); 
  16. // 加载框架公共入口文件 
  17. require(THINK_PATH."/ThinkPHP.php"); 
  18. // 实例化一个网站应用实例 
  19. App::run(); 
  20. ?> 

注意,APP_PATH 的路径指的是项目目录所在路径,而不是项目入口文件所在的路径,APP_NAME 通常都必须和项目目录名称一致.

如果你的项目入口文件放到项目目录下面的话,可以无需定义 APP_NAME 和 APP_PATH ,系统可以自动识别,THINK_PATH 通常也不是必须的.

3.自动生成

ThinkPHP 具备项目目录自动生成功能,并且不需要使用任何命令行工具,我们只需要简单的浏览器里面访问刚才创建的应用入口文件.

打开浏览器,访问该项目的入口文件: http://127.0.0.1/Myapp/index.php

这时可以看到项目构建成功后的提示画面,并且在 Myapp 目录下,已为您构建好了项目目录。

注意:ThinkPHP 框架的所有文件都是采用 UTF-8 编码保存,但是这不影响你的项目中使用其他编码开发和浏览,请注意确保文件保存的时候去掉 UTF-8 的 BOM 头信息,防止因产生隐藏的输出而导致程序运行不正常.

注意:如果你是在 Linux 环境下,要确保项目目录的自动生成,请设置 Myapp 目录的权限为可写,否则请自行创建相关目录,然后设置 Runtime 目录为可写权限(通常都是设置目录属性为 777).

4.项目配置

自动生成的项目目录下面已经为我们创建了一个空的项目配置文件,位于项目的 Conf 目录下面,名称是 config.php,我们打开这个配置文件,加入我们的数据库配置信息.

  1. return array
  2.        //' 配置项 '=>' 配置值 ' 
  3.        'APP_DEBUG' => true, // 开启调试模式     
  4.        'DB_TYPE'=> 'mysql',   // 数据库类型     
  5.        'DB_HOST'=> 'localhost'// 数据库服务器地址     
  6.        'DB_NAME'=>'demo',  // 数据库名称     
  7.        'DB_USER'=>'root'// 数据库用户名     
  8.        'DB_PWD'=>'123456'// 数据库密码     
  9.        'DB_PORT'=>'3306'// 数据库端口     
  10.        'DB_PREFIX'=>'think_'// 数据表前缀     
  11. ); 
  12. ?> 

5. 业务逻辑

接下来,我们需要实现一个数据添加和查询操作的简单应用,来领略下 ThinkPHP 的快速开发.

在项目的 LibAction 目录下面找到自动生成的 IndexAction.class.php 文件,这个文件就是 ThinkPHP 的控制器,也就是 Index 模块的实现,删除 IndexAction 类默认生成的 index 方法,添加新的 insert 方法和 index 方法,代码如下:

  1. public function insert() {    
  2.         $Demo = new Model('Demo');   // 实例化模型类     
  3.         $Demo->Create(); // 创建数据对象     
  4.         $result = $Demo->add(); // 写入数据库     
  5.         $this->redirect('index'); // 成功后重定向到 index 操作页面     
  6. public function index() {    
  7.         $Demo = new Model('Demo'); // 实例化模型类     
  8.         $list = $Demo->select(); // 查询数据     
  9.         $this->assign('list',$list); // 模板变量赋值     
  10.         $this->display(); // 输出模板     

以上定义后,Index 模块就具有了 insert 和 index 两个操作,操作方法的定义不需要使用任何参数,而且必须定义为 public 类型,否则无法访问.

由于只是简单的数据操作应用,所以我们根本不需要创建任何的模型类也同样可以进行 CURD 操作,这就是新版的魅力所在.

6. 模版定义

控制器和操作方法已经创建完毕,接下来就是定义模板文件了.

项目的自动生成已经为我们生成了 Tpl/default 目录,我们只需要在 default 目录下面创建 Index 目录,表示存放 Index 模块的模板文件,由于 insert 操作是后台操作,并不涉及模板输出,因此不需要定义模板文件,所以我们只要为 index 操作定义模板即可,内容如下:

  1. <form method="post"  action="__ URL __/insert" >   
  2. 标题: <input type="text" name="title"><br />   
  3. 内容: <textarea name="content" rows="5" cols="25"><textarea><br/>   
  4. <input type="submit" value=" 新增数据 ">   
  5. form> 
  6. <volist name=&#39;list&#39; id=&#39;vo&#39; >   
  7. 编号 :{$vo.id}<br/>   
  8. 标题 :{$vo.title}<br/>    
  9. 内容 :{$vo.content}<hr>   
  10. volist>  

把上面的内容保存为 Tpl/default/Index/index.html 即可.

action="/Admin/Manual/insert" 表示提交表单到当前模块的 insert 操作。

7. 运行应用

模板定义完成后,我们就可以运行应用了,我们在浏览器里面输入:

http://localhost/Myapp/ 就可以看到页面的表单输出了.

\

由于我们开启了调试模式,所以在页面的最下面还会看到一些额外的调试信息,并且可以很清楚的看到当前页面的请求信息和执行时间、 SQL 日志,最后还有加载的文件列表,事实上,页面 Trace 信息的显示完全是可以定制的,而这些内容不需要在模板里面定义.

\

在 ThinkPHP 中,我们称之为页面 Trace 信息,这是为了在开发过程中调试用的,关闭调试模式后,这些信息会自动消失,另外在调试模式下面,由于开启了日志记录,并且关闭了所有缓存,所以执行效率会有一定影响,但是关闭调试模式后,效率会有非常显著的提高.

可以尝试在页面新增数据,会看到页面下面有列表数据输出,到目前为止,我们已经完成了一个完整的数据操作应用了.


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
author-avatar
重羽玉婷018
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有