广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >Thinkphp开源框架如何使用?
  • 895
分享到

Thinkphp开源框架如何使用?

2024-04-02 19:04:59 895人浏览 薄情痞子
摘要

  (一)首先是准备工作下载thinkPHP框架最新版本,解压缩到你将要开发的项目位置。操作演示如图:  其中index.php是入口文件,即所有的请求都要经过此文件才能够完成。Application 是应

Thinkphp开源框架如何使用?

  (一)首先是准备工作下载thinkPHP框架最新版本,解压缩到你将要开发项目位置。操作演示如图:

Thinkphp开源框架如何使用?

  其中index.php是入口文件,即所有的请求都要经过此文件才能够完成。Application 是应用目录,在开发过程中,我们手动要操作的文件都在这个文件夹中。Public是资源文件目录thinkPHP是框架目录

  1,index.php入口文件

  2,何为入口文件,,即所有的功能操作都要经过此文件才能够完成。

  代码如下:

  <?php

  // 检测PHP环境

  if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');

  // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false

  define('APP_DEBUG',True);

  // 定义应用目录

  define('APP_PATH','./Application/');

  // 引入ThinkPHP入口文件

  require 'D:/Dev Apps/xampp/htdocs/sunyan2015/017/ThinkPHP/ThinkPHP.php';

  // 亲^_^ 后面不需要任何代码了 就是如此简单

  1,从上述代码中 可以看出入口文件主要完成:

  2,载入thinkPHP框架入口文件

  3,定义系统相关常量

  4,定义项目路径

  5,定义调试模式和应用模式在第一次访问入口文件之前,application文件夹没有任何模块,如图:

Thinkphp开源框架如何使用?

  现在我们访问入口文件,在浏览器中效果如下

Thinkphp开源框架如何使用?

  此时,application文件夹就自动生成了相应模块如图

Thinkphp开源框架如何使用?

  进入Home模块,如图

Thinkphp开源框架如何使用?

  其中标记的conf,controller,model,view是我们要操作的四个文件夹

  1,Conf文件夹,其中有config.Php是配置文件用来添加或修改一些配置参数2. Controller,model,view三个模块体现了mvc开发模式,view模块只负责呈现视图效果,即用户看到的网页效果,model模块就相当于是一个数据库,通过实例化model对象,我们可以随意对数据库进行操作,controller控制器是模型和视图之间连接的桥梁,从model中取出数据进行操作,然后将结果传递给视图。1模型实例化,我把她理解为链接数据库中具体的某个表。如,在TODOlist中,我建立了两个表,usermessage和listmessage,所以我建立了两个模型类。userMessageModel和listmessageModel,代码如下:

  <?php

  namespace Home\Model;

  use Think\Model;

  class usermessageModel extends Model{

  protected $connection=array(

  'DB_TYPE'=>'Mysql',

  'DB_USER'=>'root',

  'DB_PWD'=>'123456',

  'DB_HOST'=>'localhost',

  'DB_PORT'=>'3306',

  'DB_NAME'=>'todolist',

  'DB_CHARSET'=>'utf8',

  'DB_PREFIX'=>' ',

  );

  protected $tablePrefix='';

  }

  ?>

  <?php

  namespace Home\Model;

  use Think\Model;

  class listmessageModel extends Model{

  protected $connection=array(

  'DB_TYPE'=>'mysql',

  'DB_USER'=>'root',

  'DB_PWD'=>'123456',

  'DB_HOST'=>'localhost',

  'DB_PORT'=>'3306',

  'DB_NAME'=>'todolist',

  'DB_CHARSET'=>'utf8',

  'DB_PREFIX'=>' ',

  );

  protected $tablePrefix='';

  }

  ?>

  其中$connection数组定义的是数据库链接信息,$tablePrefix定义的是标的前缀为空。

  3. 控制器,其实就是一个类,由方法组成。如TODOlist我定义了五个方法。方法中具体代码省略,主要先看一下架构:

  <?php

  namespace Home\Controller;

  use Think\Controller;

  class IndexController extends Controller {

  public function index(){

  }

  public function reGISter(){

  }

  public function login(){

  }

  public function loGout(){

  }

  public function planlist(){

  }

  }

  ?>

  在view模块中,一个控制器(一个类),对应一个文件夹,文件夹的名称为类的名称,此类的名称为Index,则文件夹的名称为Index,然后在此文件夹中,每个方法对应一个html文件,这是方法的模板文件。如index方法对应index.html模板文件。

  4.

  public function index(){

  $title="欢迎页面";

  $bodytitle="欢迎访问todolist";

  $this->assign("bodytitle","$bodytitle");

  $username=session("username");

  if(empty($username)){

  $login=U('Home/Index/login');

  $register=U('Home/Index/register');

  $this->assign("link1","<a href=\"$login\">登录</a>");

  $this->assign("link2","<a href=\"$register\">注册</a>");

  }else{

  $logout=U('Home/Index/logout');

  $changepassWord=U('Home/Index/changepassword');

  $planlist=U('Home/Index/planlist');

  $this->assign("link1","<a href=\"$logout\">注销</a>");

  $this->assign("link2","<a href=\"$changepassword\">更改密码</a>");

  $this->assign("link3","<a href=\"$planlist\">你的列表</a>");

  }

  $this->display();

  }

  public function register(){

  $user=D("usermessage");

  $error=array();

  if($_SERVER['REQUEST_METHOD']=='POST'){

  if(!empty($_POST['username'])){

  $data['name']=$_POST['username'];

  }else{

  $error[]="请输入用户名";

  }

  if(!empty($_POST['password'])){

  $data['password']=$_POST['password'];

  }else{

  $error[]="请输入密码";

  }

  if(empty($error)){

  $r=$user->where("name='{$data['name']}'")->select();

  if(empty($r)){

  $r1=$user->add($data);

  if($r1){

  $this->assign("error","恭喜你,注册成功");

  }else{

  $this->assign("error","系统正忙,请重新注册");

  }

  }else{

  $this->assign("error","对不起,此用户名已经注册");

  }

  }else{

  foreach($error as $msg){

  $this->assign("error","$msg");

  }

  }

  }

  $this->display();

  }

  public function login(){

  $user=D("usermessage");

  $user->create();

  $error=array();

  if($_SERVER['REQUEST_METHOD']=='POST'){

  if(!empty($_POST['username'])){

  $username=$_POST['username'];

  }else{

  $error[]="请输入用户名";

  }

  if(!empty($_POST['password'])){

  $password=$_POST['password'];

  }else{

  $error[]="请输入密码";

  }

  if(empty($error)){

  $r=$user->where("name='$username'")->select();

  if(!empty($r)){

  $r1=$user->where("name='$username' and password='$password'")->find();

  if(!empty($r1)){

  $this->assign("error","登录成功");

  $this->assign("error1","{$r1['user_id']}");

  session("username","$username");

  session('user_id',$r1['user_id']);

  } else{

  $this->assign("error","密码错误,请重新输入");

  }

  }else{

  $this->assign("error","对不起,此用户名并未注册");

  }

  }else{

  foreach($error as $msg){

  $this->assign("error","$msg");

  }

  }

  }

  $this->display();

  }

  public function logout(){

  $username=session('username');

  if(!empty($username)){

  session(null);

  $username=session('username');

  if(empty($username)){

  $this->assign('logout','注销成功');

  }else{

  $this->assign('logout','注销失败');

  }

  }else{

  $this->assign('logout','您还没有登录');

  }

  $this->display(login);

  }

  public function changepassword(){

  $error=array();

  $user=D('usermessage');

  $username=session('username');

  $user_id=session('user_id');

  if(!empty($username)){

  if($_SERVER['REQUEST_METHOD']=='POST'){

  if(!empty($_POST['newpassword'])){

  $data['password']=$_POST['newpassword'];

  //$user->password==$_POST['newpassword'];

  }else{

  $error[]="请输入密码";

  }

  if(empty($error)){

  $r=$user->where("user_id='$user_id'")->save($data);

  $this->assign("error2","$r");

  if($r){

  $this->assign("error","恭喜你,密码更改成功");

  }else{

  $this->assign("error","系统正忙,请重新更改密码");

  }

  }else{

  foreach($error as $msg){

  $this->assign("error","$msg");

  }

  }

  }

  }else{

  $this->assign('error','请先登录');

  }

  $this->display();

  }

  public function planlist(){

  $username=session('username');

  $user_id=session("user_id");

  $this->assign("username","$username");

  //$user=D("usermessage");

  $list=D("listmessage");

  $list->create();

  if($_SERVER['REQUEST_METHOD']=='POST'){

  if($_POST['orderhidden']=='a'){

  if(!empty($_POST['content'])){

  $data['content']=$_POST['content'];

  $data['user_id']=$user_id;

  $r=$list->add($data);

  if($r){

  $this->assign("message","添加成功");

  }else{

  $this->assign("message","添加失败");

  }

  }else{

  $this->assign("message","请输入内容");

  }

  }

  if($_POST['orderhidden']=='b'){

  $list_id=$_POST['listhidden'];

  $r=$list->where("list_id='$list_id'")->delete();

  if($r){

  $this->assign("message","删除成功");

  }else{

  $this->assign("message","请重新点击删除");

  }

  }

  }

  $r=$list->field("content,list_id")->where("user_id='$user_id'")->select();

  

  $this->assign("select",$r);

  $this->display();

  }

  他的模板文件index.html

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "Http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>{$title}</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  </head>

  <body>

  <h2>{$bodytitle}</h2>

  <!--<a href="{:U('Home/Index/login')}" >登录</a>-->

  </br>

  <!--<a href="{:U('Home/Index/register')}" >注册</a>-->

  {$link2}

  </br>

  {$link3}

  </br>

  </body>

  </html>

  Register.html

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>登录页面</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta name="deion" content="布尔教育 http://www.itbool.com" />

  </head>

  <body>

  <fORM action="register" method="POST">

  用户名:<br />

  <input type="text" name="username" />

  <br />

  密码:<br />

  <input type="password" name="password" />

  请由字母数字或下划线组成,长度为5-21

  <br />

  <input type="submit" value="注册" />

  <input type="reset" value="重置">

  </form>

  <a href="{:U('Home/Index/index')}">返回首页</a>

  <br/>

  <a href="{:U('Home/Index/login')}">登录</a>

  </br>

  </br>

  {$error}

  </br>

  </body>

  </html>

  Login.html

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>登录页面</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta name="deion" content="布尔教育 http://www.itbool.com" />

  </head>

  <body>

  <form action="login" method="POST">

  用户名:<br />

  <input type="text" name="username" />

  <br />

  密码:<br />

  <input type="password" name="password" />

  <br />

  <input type="submit" value="登录" />

  </br>

  <input type="reset" value="重置">

  </form>

  <a href="{:U('Home/Index/changepassword')}">更改密码</a>

  <br />

  <a href="{:U('Home/Index/index')}">返回首页</a>

  </br>

  <a href="{:U('Home/Index/logout')}">注销</a>

  </br>

  {$error}

  {$logout}

  {$error1}

  </html>

  Changepassword.html

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>更改密码页面</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta name="deion" content="布尔教育 http://www.itbool.com" />

  </head>

  <body>

  <form action="changepassword" method="POST">

  新密码:<input type="password" name="newpassword" />

  <br />

  <input type="submit" value="确定更改" />

  <input type="reset" value="重置" />

  </form>

  <a href="{:U('Index/login')}">登录</a>

  <br />

  <a href="{:U('Index/index')}">返回首页</a>

  </br>

  {$error}

  </br>

  {$error1}

  </br>

  {$error2}

  </body>

  </html>

  Planlist.html

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>计划列表</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta name="deion" content="布尔教育 http://www.itbool.com" />

  </head>

  <body>

  <h3>{$username}欢迎来到你的计划列表</h3>

  {$message}

  <table border=3>

  <foreach name="select" item="list">

  <tr>

  <td>

  {$list.content}

  <form action="planlist" method="POST">

  <input type="hidden" name="listhidden" value="{$list.list_id}" />

  <input type="hidden" name="orderhidden" value="b" />

  <input type="submit" value="删除" />

  </form>

  </td>

  </tr>

  </foreach>

  <tr>

  <td>

  <form action="planlist" method="POST">

  内容:<textarea name="content" cols="30" rows="3"></textarea>

  <br />

  <input type="submit" value="添加" />

  <input type="hidden" name="orderhidden" value="a" />

  </form>

  </td>

  </tr>

  </table>

  </br>

  <a href="{:U('Home/Index/changepassword')}">更改密码</a>

  <br />

  <a href="{:U('Home/Index/index')}">返回首页</a>

  </br>

  <a href="{:U('Home/Index/logout')}">注销</a>

  </br>

  </body>

  </html>

  5.下面就以上代码中的知识点进行讲解1) URL的动态生成:利用thinkPHP内置的U方法。当我点击不同链接的时候,各个模块位置在发生变化,因此固定的路径是不可行的,路径必须是可以变化的。在控制器中,U方法用法如下:

  $planlist=U('Home/Index/planlist');

  $this->assign("link3","<a href=\"$planlist\">你的列表</a>");

  在模板文件中,U方法用法如下

  <a href="{:U('Home/Index/logout')}">注销</a>

  1,概括一下为U(模块/控制器/方法),若省略模块名,则默认为当前模块名称

  2,实例化模型类:用D方法或者M方法

  $user=D("usermessage");

  $list=D("listmessage");

  3)CURD操作和连贯操作方法

  (1 )create方法:用于创建数据对象,最典型的应用就是自动根据表单数据创建数据对象,但数据对象是保存在内存中的,并没有实际写入到数据库中,知道使用add或save方法

  (2)save方法:

  $user->where("user_id='$user_id'")->save($data);

  返回值是影响的记录行数

  返回值是自动增长的主键,即一个整型数据

  (3)select方法:用于数据读取,即获取数据表中的多行记录,

  $user->where("name='{$data['name']}'")->select();

  若查询出错,返回值是false,若查询结果为空,则返回null,否则返回二维数组

  (4)delete方法:用于数据删除

  $list->where("list_id='$list_id'")->delete();

  返回值是删除的记录行数

  这四个操作称为CURD操作,是对数据库的基本操作

  (5)data方法:用于设置当前要操作的数据对象的值

  $data['password']=$_POST['password'];

  (6)add方法用于数据写入

  $user->add($data);

  (7)where方法,主要用于添加数据库操作的限制条件

  $user->where("user_id='$user_id'")->save($data);

  $r1=$user->where("name='$username' and password='$password'")->find();

  (8)field方法:选择要返回或操作的字段

  $list->field("content,list_id")->where("user_id='$user_id'")->select();

  4) session的设置与删除

  session("username","$username");

  session('user_id',$r1['user_id']);

  session(null);

  5)模板文件:thinkphp内置了一个基于XML的模板引擎thinktemplate,,在变量输出和制定模板文件时,与smarty模板引擎相同

  $this->assign()

  $this->display()

  我还用到了一个循环标签foreach ,用于计划列表的输出

  方法中的变量输出:$this->assign("select",$r);

  模板文件中的循环输出

  <foreach name="select" item="list">

  <tr>

  <td>

  {$list.content}

  <form action="planlist" method="POST">

  <input type="hidden" name="listhidden" value="{$list.list_id}" />

  <input type="hidden" name="orderhidden" value="b" />

  <input type="submit" value="删除" />

  </form>

  </td>

  </tr>


程序员杭州软件测试杭州APP开发杭州PHP工程师

--结束END--

本文标题: Thinkphp开源框架如何使用?

本文链接: https://www.lsjlt.com/news/41598.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Thinkphp开源框架如何使用?
      (一)首先是准备工作下载thinkPHP框架最新版本,解压缩到你将要开发的项目位置。操作演示如图:  其中index.php是入口文件,即所有的请求都要经过此文件才能够完成。Application 是应...
    99+
    2022-10-18
  • 如何使用开源J2EE框架bbossgroups 3.5
    这篇文章将为大家详细讲解有关如何使用开源J2EE框架bbossgroups 3.5,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。bbossgroups 3.5 的主要改进:◆  本...
    99+
    2023-06-17
  • 如何进行Hystrix开源框架
    本篇文章给大家分享的是有关如何进行Hystrix开源框架,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Spring Cloud集成了Hystrix,Hystrix在很多大公司里...
    99+
    2023-06-19
  • Java WebService开源框架CXF怎么使用
    使用CXF框架开发Java WebService可以按照以下步骤进行:1. 配置CXF框架:下载CXF框架的最新版本,解压后将CXF...
    99+
    2023-08-08
    Java CXF
  • 如何使用Vue.js开发微信小程序开源框架mpvue
    这篇文章主要介绍了如何使用Vue.js开发微信小程序开源框架mpvue,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言mpvue是一款使用...
    99+
    2022-10-19
  • thinkphp框架如何查询数据
    本篇内容主要讲解“thinkphp框架如何查询数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“thinkphp框架如何查询数据”吧!一、基本查询在ThinkPHP框架中,可以使用模型类的fin...
    99+
    2023-07-06
  • 如何进行安装ThinkPHP框架
    本文小编为大家详细介绍“如何进行安装ThinkPHP框架”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何进行安装ThinkPHP框架”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、环境要求在安装 Think...
    99+
    2023-07-05
  • Android使用开源框架Fresco处理图片
    关于Fresco的优点大家自行谷歌吧,它太强大太优秀了,我这一片小博文容纳不下啊羡慕,今天主要给大家简单介绍下Fresco的使用以及一些属性的介绍。  Fresco是...
    99+
    2022-06-06
    开源 图片 Android
  • 怎么使用thinkphp框架实现弹框功能
    今天小编给大家分享一下怎么使用thinkphp框架实现弹框功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。弹框的实现原理在...
    99+
    2023-07-05
  • Node.js开源应用框架HapiJS介绍
    一、HapiJS介绍 HapiJS是一个开源的、基于Node.js的应用框架,它适用于构建应用程序和服务,其设计目标是让开发者把精力集中于开发可重用的应用程序的业务逻辑,向开发者提供构建应用程序业务逻辑所需...
    99+
    2022-06-04
    开源 框架 Node
  • 人脸识别java开源框架怎么使用
    人脸识别java开源框架通常需要以下步骤来使用:1. 下载和安装相应的框架,例如OpenCV、FaceNet、DeepFace等。2...
    99+
    2023-05-31
    人脸识别java java
  • thinkphp框架如何修改默认主页
    这篇文章主要介绍“thinkphp框架如何修改默认主页”,在日常操作中,相信很多人在thinkphp框架如何修改默认主页问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”thinkphp框架如何修改默认主页”的疑...
    99+
    2023-07-05
  • thinkphp框架如何实现多表查询
    本文小编为大家详细介绍“thinkphp框架如何实现多表查询”,内容详细,步骤清晰,细节处理妥当,希望这篇“thinkphp框架如何实现多表查询”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。简介thinkphp框...
    99+
    2023-07-06
  • 本地环境如何运行thinkphp框架
    本篇内容介绍了“本地环境如何运行thinkphp框架”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在本地开发环境中运行ThinkPHP框架需...
    99+
    2023-07-05
  • Webapp开发框架Clouda如何使用
    Clouda是一个基于Node.js的Web应用开发框架,可以帮助开发者快速构建高性能的Web应用。下面是使用Clouda开发Web...
    99+
    2023-08-23
    Webapp Clouda
  • 开源Web应用框架Django图文教程
      本文面向:有python基础,刚接触web框架的初学者。   环境:windows7   python3.5.1  pycharm专业版  Django 1.10版  pip3 一、Django简介  ...
    99+
    2022-06-04
    开源 框架 图文
  • 怎么使用thinkphp框架实现登录功能
    这篇文章主要介绍“怎么使用thinkphp框架实现登录功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用thinkphp框架实现登录功能”文章能帮助大家解决问题。第一步:创建登录页面首先,需...
    99+
    2023-07-05
  • Android Volley框架使用源码分享
    过去在Android上网络通信都是使用的Xutils 因为用它可以顺道处理了图片和网络这两个方面,后来发觉Xutils里面使用的是HttpClient  而Googl...
    99+
    2022-06-06
    volley框架 volley 源码分享 源码 Android
  • 如何查看系统中thinkphp框架的版本
    这篇文章主要介绍“如何查看系统中thinkphp框架的版本”,在日常操作中,相信很多人在如何查看系统中thinkphp框架的版本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何查看系统中thinkphp框架...
    99+
    2023-07-05
  • 如何使用HTML5框架加速Web开发
    本篇内容介绍了“如何使用HTML5框架加速Web开发”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!   ...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作