thinkphp_thinkphp遍历数据库 - CSDN
thinkphp 订阅
ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。 [1]  ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。 展开全文
ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。 [1]  ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。
信息
定    义
一个开源轻量级PHP框架
诞    生
于2006年初
原    名
FCS
外文名
ThinkPHP
thinkphp发展历史
ThinkPHP发展历程,无数TPer一起见证了ThinkPHP的成长:2006年01月15日, ThinkPHP的雏形版本FCS0.6.0发布;2006年02月12日,(元宵节)发布FCS 0.6. 1 版本,Google讨论组成立;2006年03月15日, FCS 0.7.0版本发布;2006年05月07日, FCS 0.8版本发布;2006年10月25日, FCS 0.9.0版本发布;2006年12月25 日,SF项目和Google网站ThinkPHP项目申请完成;2007年01月01日, FCS正式更名为ThinkPHP;2007年01月08日, ThinkPHP 0.9.5版发布同期官方网站开通;2007年02月21日, TOPThink社区暨新版ThinkPHP官方网站开通,并提供社区支持;2007年02月25日, 发布ThinkPHP 0.9.6版本,完成FCS到ThinkPHP的正式迁移;2007年04月29日, ThinkPHP发布0.9.7版本;2007年07月01日, ThinkPHP发布0.9.8版本;2007年10月15 日,ThinkPHP发布1.0.0RC1版本,完成PHP5的重构;2007年12月15 日,ThinkPHP发布1.0.0正式版本标志着ThinkPHP步入轨道;2008年10月01日, ThinkPHP发布1.0.3正式版本;2008年12月25 日,ThinkPHP发布1.5正式版本并启动商业化支持服务,ThinkPHP进入稳定发展;2009年05月01日, ThinkPHP 发布1.6.0RC1版本;2009年10月01日, ThinkPHP发布2.0版本完成新的重构和飞跃,这是一次划时代的版本;2012年04月05日, ThinkPHP发布3.0版本 庆祝ThinkPHP发布6周年;2012年10月08日, ThinkPHP发布3.1版本;2012年11月11日, ThinkPHP3.1.2扩展包;2013年05月09日,ThinkPHP发布3.1.3完整版;2013年12月18日,ThinkPHP发布3.2正式版;2014年10月31日,ThinkPHP发布3.2.2完整版 [2]  ;2015年12月11日,ThinkPHP 5.0 Beta 发布;2017年02月27日,Thinkphp5.0.5完整版正式发布 [3]  ;2018年05月02日,Thinkphp5.1.0RC版本发布; [4]  2019年04月22日,Thinkphp6.0RC2版本发布 [5]  ;2019年08月16日,Thinkphp6.0RC4版本发布 [6]  ;2019年12月24日,Thinkphp6.0.1版本发布 [7]  ;
收起全文
精华内容
参与话题
  • thinkPHP框架学习(速成,一天)

    万次阅读 2018-10-15 21:34:30
    一。TP框架介绍与配置 第一个是最开始沿用的一种结构,它有一个致命的缺点:比如说如果后端程序员在编写的过程中,前端程序就不能做修改,一旦修改了,那么肯定会有冲突。...后来大家进行了改进----把前端脱离...

    一。TP框架介绍与配置

    第一个是最开始沿用的一种结构,它有一个致命的缺点:比如说如果后端程序员在编写的过程中,前端程序就不能做修改,一旦修改了,那么肯定会有冲突。

    后来大家进行了改进----把前端脱离出来。

    再后来又进行了改进,把逻辑和业务分离,也就出现了MVC结构。

    MVC不是一种新的技术,而是在原有代码的基础上,帮我们把业务逻辑理的更清晰而形成的代码分层编写的一种结构。

    1.下面分别介绍三层:

    ThinkPHP简介

     

     

     

     

     

     

     

     

    展开全文
  • ThinkPHP5.0框架开发

    千人学习 2018-03-13 14:00:30
    ThinkPHP V5.0是一个为API开发而设计的高性能框架——是一个和重构版本,采用... ThinkPHP5是一个全新的里程碑版本,包括路由、日志、异常、模型、数据库、模板引擎和验证等模块都已经重构,不适合原有3.2项目的升级。
  • thinkphp5的简单介绍与使用

    万次阅读 多人点赞 2018-08-31 16:41:39
    前言: ...随随便便写个网页界面,再把数据库内容弄一弄,貌似就没什么难度了。当初的小编也是这样傻fufu的认为做个网站也就仅此而已——-just so so( ̄_, ̄ )。然而随着学习的不断深入,猛然发现事实并非如此,再...

    此文章适用于刚学过php但还没接触过框架的小伙伴。
    前言
    不知大家是否有这样的感觉,经过一段时间的php学习发现这门语言并不是很难,而且很容易上手。随随便便写个网页界面,再把数据库内容弄一弄,貌似就没什么难度了。当初的小编也是这样傻fufu的认为做个网站也就仅此而已-------just so so( ̄_, ̄ )。然而随着学习的不断深入,猛然发现事实并非如此,再回想当初的念头,只能默默地感叹自己too young too simple。就小编而言,一开始学的内容是PHP的入门阶段知识,简而言之就是把代码往那一堆,然后调数据库显示实现功能就完事了。随着想写的的功能的增加,小编渐渐发现写个设计要写20多个页面,改个代码就要半天,but小编当时还并没有框架这一概念。直到学习了java EE的Struts2框架,小编才意识到自己是如此的菜----瞬间原地爆炸。为了强化php的学习,小编就花了些时间来研究php众多框架中的一个—>thinkPHP5。
    后序
    小编写这篇文章旨在做一个学习笔记,顺便给想要学习thinkphp5的小伙伴一个简单地浅显地介绍,置于数据库的操作小编就不介绍了,因为真的很多,不过开发手册上有较为详细的解释,写的不好的地方请大神纠正。此外小编个人觉得tp5的快速入门手册也是值得一看的(付费)。
    1.什么是thinkphp5框架?(这是废话)
    在介绍thinkphp5之前,我们先来谈一谈什么是框架。简言之,别人帮你建好了房子但尚未装修,你需要在别人设计好的户型里去装修,省去你搬砖的重复性操作。(对于框架的深入理解大家可以自行百度)。
    ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,自2006年诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,尤其注重开发体验和易用性,并且拥有众多的原创功能和特性,为WEB应用和API开发提供了强有力的支持。(对于初学者而言了解概念小编认为并没什么用,还不如直接在做项目中感受一下)

    2.前期准备工作
    (1)编程工具的选择:开放工具:phpStorm + 服务器工具:phpStudy
    对于工具的选择主要看个人的喜好,但最好选择主流的编辑工具。
    phpstrom 下载及安装教程地址:http://www.php.cn/xiazai/gongju/122
    phpStudy下载及安装教程地址:http://www.php.cn/xiazai/gongju/845
    如果没有用过phpstudy可以链接上面的地址去学习一下phpsyudy的基本操作方法
    *下面这一步暂时用不到
    搭建PhpStorm+PhpStudy开发环境:https://blog.csdn.net/u012861467/article/details/54692236

    (2)下载安装thinkphp5
    下载地址:http://www.thinkphp.cn/donate/download/id/1155.html
    安装方法:将压缩包解压放phpStudy/ww的在项目下就可以
    这里写图片描述
    这里写图片描述
    输入网址:localhost/thinkphp_5/public/ 出现下面界面则安装成功
    这里写图片描述
    (3)学习thinkphp5所要具备的知识
    php入门阶段的知识+php面向对象的程序设计(==》命名空间那部分可以先看看)+mvc设计模式
    3.thinkphp5的基本使用方法
    (1)参考资料: thinkphp5完全开发手册: https://www.kancloud.cn/manual/thinkphp5/118003 开发手册内容有很多没有必要直接看下来,对于初次接触tp5的小伙伴而言,你需要用到哪部分知识就去查找哪部分。

    (2)目录结构:(大致了解即可)
    这里写图片描述
    tp5的目录文件有很多,这里我们着重讲一下划线的部分,其他部分大家可以参考开发手册。首先说一下application,简单地说这个部分就是我们编写代码的地方。如上图所示,index模块为前端,而我们一般会自己创建admin模块及后端管理员。
    这里写图片描述
    这里写图片描述
    index模块和admin模块下是我们熟悉的MVC,datebase.php为配置数据库的文件,application下的config.php是影响全部模块的配置文件,而index和admin的config.php只影响自己模块下的文件。public下的static是放静态资源的文件,index.php为入口文件,即只能通过这一文件访问。
    (3)MVC
    Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
       通常模型对象负责在数据库中存取数据。
    View(视图)是应用程序中处理数据显示的部分。
       通常视图是依据模型数据创建的。
    Controller(控制器)是应用程序中处理用户交互的部分。
       通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
    这里写图片描述

    Model(模型)
    a: 数据库的配置:
    打开database.php,一般要改动的就是划线部分。另外在thinkphp5.0完全开发手册中,我们在基础目录下可以看到开发规范,这是我们需要了解的。
    这里写图片描述
    b: 建立模型:(这部分在开发手册中也有更详细的解读)

    	   <?php
    	namespace app\admin\model;
    	use think\Model;
    	
    	class User extends Model
    	{
    	
    	}
    	?>
    

    大多情况下,我们无需为模型定义任何的属性和方法即可完成基础的操作。模型会自动对应一个数据表。规范是:数据库前缀+当前的模型类名(不含命名空间)因为模型类命名是驼峰法,所以获取实际的数据表的时候会自动转换为小写+下划线命名的数据表名称,所以只要建立一个与数据表同名的model就可以。如果你的数据表不是像tp_user这样以前缀加下划线命名可以在model中指定数据表。

    	    <?php
    	namespace app\admin\model;
    	use think\Model;
    	use think\Db;
    	class Swe extends Model
    	{
    	    // 设置完整的数据表(包含前缀)
    	    protected $table = 'swe';
    	}
    

    下面用一个例子来解释:
    首先在admin模块下建立以下几个文件,在controller下建立User.php ,Model下建立User.php ,在view下建立user文件夹,在user文件夹下建立user.html
    并建立user表 字段有id,clickname,email,birthday
    代码如下:
    controller下的User.php

    <?php
    namespace app\admin\controller;
    use think\Controller;
    use app\admin\model\User as UserModel;
    class User extends Controller
    {
    //    // 创建用户数据页面
    //    public function create()
    //    {
    //        return $this->fetch('user');//加载模板,会自动找到view下的user的user.html并显示
    //    }
    
    // 创建用户数据页面
        public function create()
        {
            return view('user');//加载模板,会自动找到view下的user的user.html
        }
    // 新增用户数据
        public function add()
        {
            $user = new UserModel;
            if ($user->allowField(true)->save(input('post.'))) {//input('post.'))为表单提交的数据
                return '用户[ ' . $user->nickname . ':' . $user->id . ' ]新增成功';
            } else {
                return $user->getError();
            }
        }
        // model的助手函数新增用户数据
        public function add3()
        {
            // 使用model助手函数实例化User模型
            $user = model('User');
    // 模型对象赋值
            $user->data([
                'nickname'  =>  'SWE',
                'email' =>  'thinkphp@qq.com'
            ]);
            if ($user->save()) {
                return '用户[ ' . $user->nickname . ':' . $user->id . ' ]新增成功';
            } else {
                return $user->getError();
            }
        }
      
    

    Model下的User.php

    <?php
    namespace app\admin\model;
    use think\Model;
    
    class User extends Model
    {
    
    }
    

    user.html

    <!doctype html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>创建用户</title>
        <style>
        </style>
    </head>
    <body>
    <h2>创建用户</h2>
    <FORM method="post" class="form" action="{:url('admin/user/add')}">
        昵 称:<INPUT type="text" class="text" name="nickname"><br/>
        邮 箱:<INPUT type="text" class="text" name="email"><br/>
        生 日:<INPUT type="text" class="text" name="birthday"><br/>
        <input type="hidden" name="__token__" value="{$Request.token}" />
        <INPUT type="submit" class="btn" value=" 提交 ">
    </FORM>
    </body>
    </html>
    

    url:localhost/tp5/public/index.php/admin/user/create 执行user.php下的create方法
    return $this->fetch(‘user’); //加载模板,会自动找到view下的user的user.html并显示

    user.html提交数据到add方法
    实例化Model类 ,$user->allowField(true)->save(input(‘post.’))提交数据到数据库

    展开全文
  • ThinkPHP6实战开发电商系统

    千人学习 2020-05-07 11:58:33
    课程功能亮点:本次电商系统涵盖了ThinkPHP6常见的大部分功能知识点,多应用、中间件、视图渲染、助手函数、图片上传、验证码、数据库、模型、异常等。 电商系统界面参考早期的小米商城官网,包含:商品SKU、库存、...
  • 最全的thinkphp5笔记整理

    千次阅读 2019-06-17 15:23:34
    1.访问url http://localhost:8080/tp5_book/public/index.php/模块名/控制器名/方法名 2.目录结构 ├─application 应用目录(可设置) │ ├─common 公共模块目录(可选) │ ├─common.php 公共...│ ├─confi...

    1.访问url

    http://localhost:8080/tp5_book/public/index.php/模块名/控制器名/方法名
    

    2.目录结构

    ├─application 应用目录(可设置)
    │ ├─common 公共模块目录(可选)
    │ ├─common.php 公共函数文件
    │ ├─route.php 路由配置文件
    │ ├─database.php 数据库配置文件
    │ ├─config.php 应用配置文件
    │ ├─module1 模块1目录
    │ │ ├─config.php 模块配置文件
    │ │ ├─common.php 模块函数文件
    │ │ ├─controller 控制器目录
    │ │ ├─model 模型目录(可选)
    │ │ ├─view 视图目录(可选)
    

    3.common文件夹的使用

    在common文件夹下
    	├─common
    		├─controller
    			├─Index.php
    在Index.php中编写代码
    	<?php
    		namespace app\common\controller;
    		class Index
    		{
    			public function index(){
    				return "这是common模块";
    			}	
    		}
    	?>	
    别的模块调用
    	<?php
    		namespace app\admin\controller;
    		use app\common\controller\Index as commonIndex;//调用common模块
    		
    		class Index
    		{
    			public function index(){
    				return "这是admin模块";
    			}
    			public function common(){
    				$common = new commonIndex();
    				return $common->index();
    			}	
    		}
    	?>
    

    4.更改应用配置

    在根目录下创建文件
    	├─conf
    		├─config.php
    	将app下的所有配置文件移到config.php下
    定义配置文件目录
    	├─public
    		├─index.php
    	// 定义配置文件目录目录
    	define('CONF_PATH', __DIR__ . '/../conf/');
    更改数据覆盖当前配置
    	return [
    		// 应用调试模式
    		'app_debug'              => true,
    		// 应用Trace
    		'app_trace'              => false,
    	];	
    查看当前配置
    	dump(config());
    	注:显示的是thinkphp/convention.php下的所有配置信息
    

    5.扩展配置

    创建文件
    	├─conf
    		├─extra
    在extra文件夹下创建扩展配置email.php
    	<?php
    		return[
    			'host'=>'2564196401@qq.com',
    			'name'=>'31321321',
    		];
    	?>
    	输出的样式是
    		["email"] => array(2) {
    			["host"] => string(17) "2564196401@qq.com"
    			["name"] => string(8) "31321321"
    		}
    	注意:扩展配置的优先级高于应用配置,及扩展配置会覆盖应用配置
    

    6.场景配置

    更改conf/config.php下的
    	return[
    		'app_status'=>'home'
    	];
    在conf下创建home.php和office.php场景配置文件
    用法:
    	如果'app_status'=>'home'则会调用home.php的配置文件
    	如果'app_status'=>'office'则会调用office.php的配置文件
    注意:
    	在场景配置文件中必须配置对应栏目的所有项,否则配置会缺失(thinkphp5的bug)
    

    7.模块配置

    在conf文件夹下创建以模块名为命名的文件
    	如:├─conf
    		 ├─admin
    		   ├─config.php
    注:在conf/admin/config.php下的配置文件,只有在admin模块下生效
           在conf/admin中依然可以创建扩展配置文件夹extra,且只有在admin模块下生效
    

    8.调用其他文件的方法

    例:
    在app下创建文件
    	├─common
    		├─Common.php
    Common.php下编写方法
    	<?php
    	namespace app\common;
    	
    	class Common {
    		public function index(){
    			$a=1;
    			return $a;
    		}
    	}
    	?>
    其他地方调用
    (1)use app\common\Common;//显引用命名空间
    
    	$result=new Common();
    	$result->index();
    	
    (2)$result=new \app\common\Common;
        $result->index();
    

    9.设置路由

    在config.php更改配置
    	// 是否开启路由
    	'url_route_on'           => true,
    	// 是否强制使用路由,开启时其他默认路由将被禁止
    	'url_route_must'         => false,
    新建文件
    	├─conf
    		├─route.php
    在route.php文件下配置路由
    	<?php
    		return [
    			//不带参数,访问:http://localhost:8080/tp5_test/public/index.php/demo1
    		    'demo1'				=>'index/index/demo1',
    		    //带参数,访问:http://localhost:8080/tp5_test/public/index.php/demo2/2
    		    'demo2/:id'			=>'index/index/demo2',
    		];
    	?>
    

    10.请求对象request的使用

    //获取当前域名
    request()->domain()
    //获取完整的url
    request()->url()
    //获取不包含get参数的url
    request()->baseUrl()
    //获取pathinfo,及获取当前的路径,含后缀
    request()->pathinfo()
    //获取当前的路径,不含后缀
    request()->pathinfo()
    //获取当前的请求类型
    request()->method()
    //判断请求类型
    request()->isPost()		是post提交返回true
    request()->isGet()		是get提交返回true
    request()->isAjax()		是ajax方式提交返回true
    //获取get参数
    request()->get()		
    //获取get参数和传给方法的参数值
    request()->param()
    //获取post参数
    request()->post()
    //获取会话控制的
    request()->session()
    request()->cookie()
    //获取模块名 控制器名 操作方法
    request()->module()
    request()->controller()
    request()->action()
    注:获取某些指定的值
    	request()->get('id')
    	request()->session('username')
    

    11.助手函数input的使用

    //获取所有参数值
    input()
    //获取get参数
    input('get.')
    //获取post参数
    input('post.')
    //获取session
    input('session.')
    //获取cookie
    input('cookie.')
    //判断是否存在,如果get.id存在,返回true
    input('?get.id')
    注:
    //获取具体的值
    input('get.id')
    //设置默认值,如果id不存在,返回100
    input('get.id',100)
    //设置强制转换
    input('get.id',100,'intval')
    //传递一些操作
    input('get.id','','trim')	//去除字符串左右两边的空白符	
    

    12.会话控制

    session的使用
    	配置文件
    		'session'                => [
    	        'id'             => '',
    	        // SESSION_ID的提交变量,解决flash上传跨域
    	        'var_session_id' => '',
    	        // SESSION 前缀
    	        'prefix'         => 'think',
    	        // 驱动方式 支持redis memcache memcached
    	        'type'           => '',
    	        // 是否自动开启 SESSION
    	        'auto_start'     => true,
    		],
    	赋值
    		session('loginUsername', $data["username"], 'index');// 赋值index作用域
    	获取
    		session('loginUsername', '', 'index');// 赋值index作用域		
    	判断是否存在
    		session('?loginUsername', '', 'index');	返回1表示存在
    	删除
    		session(null,'index');
    
    cookie的使用
    	// 设置
    	cookie('name', 'value', 3600);
    	// 获取
    	echo cookie('name');
    	// 判断
    	cookie('?name');返回1表示存在
    	// 删除
    	cookie('name', null);
    

    13.调用视图view

    调用对应视图,默认调用到‘view/控制器名/方法名.html’里的html文件
    	return view();
    调用指定视图
    	return view('index/demo.php');
    调用视图,并传参
    	return view('index',['title'=>'主页面']);
    	html页调用
    		<p>{$title}</p>	
    替换html指定内容
    	return view('','',['title'=>'替换内容']);
    	注:这会替换html里标签内外符合的内容,包括标签名、属性名
    

    14.Controller方法的使用

    	use think\Controller;//引用
    	class Index extends Controller{//继承
    		public function index(){
    			(1)//另一种跳转方式,注:该方法的3个参数和view一样
    				return $this->fetch();
    			(2)//向前端页面传值
    				$result="传值";
    				$this->assign('res',$result);
    				//前端接收
    				<span>{$res}</span>
    			(3)//直接输出一段字符串
    				return $this->display('这是{$title}位置',['title'=>'标题']);
    		}
    	}
    

    15.视图输出字符串内容替换

    在config.php文件下配置
    	//输出替换
        'view_replace_str'       => [
        	"__ADMIN__" =>'/tp5_book/public/static/admin',
        ],
    	前台直接调用即可
    

    16.{}的使用规则

    {$data.name|md5}							>>>相当于>>>		<?php echo md5($data['name']); ?>
    {$create_time|date="y-m-d",###}				>>>相当于>>>		<?php echo date("y-m-d",$create_time); ?>
    {$name|md5|strtoupper|substr=0,3}			>>>相当于>>>		<?php echo substr(strtoupper(md5($name)),0,3); ?>
    {:substr(strtoupper(md5($name)),0,3)}		>>>相当于>>>		<?php echo substr(strtoupper(md5($name)),0,3); ?>
    注:每个函数之间用丨符号隔开,且函数执行顺序是从右往左依次调用
           每个函数之间用:开头,且函数执行顺序是从左往右依次调用
    原样输出{},禁止编译
    	//在{literal}里的内容会被原样输出
    	{literal}
    		{$title}
    	{/literal}
    带参数的url
    	{:url('goods/detail',array('id'=>$vo.id))}
    

    17.视图循环

    for循环
    	{for start="1" end="10" step="2" name="k"}
    		循环内容{$k}
    	{/for}
    	注:默认name="i",step="1"
    	<!--
    		for($k=1;$k<10;$k+=2){
    			echo "循环内容{$k}";
    		}
    	-->
    foreach循环
    	{foreach $user as $vo}
    	    <tr>
    	        <td>{$vo.id}</td>    
    	    </tr>
        {/foreach}
    

    18.视图判断循环

    if语句
    	{if condition="($vo.state==0) OR ($vo.state==1)"} 
    	等待提现			
    	{elseif condition="($vo.state==2)"/}
    	成功
    	{else /} 
    	失败
    	{/if}
    

    19.视图页面引用公共html

    在view下新建一个public文件,保存公共html文档
    	{include file="public/_head"}<!--引用公共html-->
    	{include file="public/_left"}<!--引用公共左侧html-->
    

    20.分页查询

    控制器方法
    	public function index(){
    		$result=db('user')
    				->order('time Desc')//排序,asc:升序排列,desc:降序排列
    				->paginate(2);//分页
    		$this->assign('user',$result);//将信息分配到前端模板
    		return view();
    	}
    视图调用
    	{foreach $user as $vo}
    	    <tr>
    	        <td>{$vo.id}</td>    
    	    </tr>
        {/foreach}
        <tr>
        	<td>{$user->render()}</td> //分页
        </tr>
    

    21.数据库助手函数操作

    添加
    	db('user')->insert($data);
    更新
    	db('store_wait')->update($data);
    查询
    	$result=db('store_wait')->select();	//多条
    	$result=db('store_wait')->find();	//单条
    指定字段查询
    	$rows = db('store')
    	        ->where('id',1)
    	    	->field(['id','username'])//要查的字段
    	    	->select();
    关联查询
    	$rows = db('store')
    	    	->alias('s')//别名
    	    	->join('goods g','s.id=g.store_id','left')//查询关联的信息与左表(及s表)不相关的信息
    	    	->join('user u','s.user_id=u.id')
    	        ->where('s.id',1)//条件
    	    	->field(['s.*','g.*','u.username'])//要查的字段
    	    	->select();
    排序查询
    	$result=db('user')->order('time Desc')->select();//排序,asc:升序排列,desc:降序排列
    单条件查询
    	$result=db('store_wait')->where('id',$id)->find();
    多条件查询
    	$result=db('store_wait')->where('goods_id='.$id.' and state=4')->find();
    	$result=db('store_wait')->where('id',$id)->where('state',4)->find();
    模糊查询
    	$result=db('store_wait')->where('id','>',$id)->find();
    	$result=db('store_wait')->where('id','like',$id.'%')->find();
    计算总价
    	$result=db('cart')->where('user_id',$user_id)->sum('cash');
    	• max() 	表示查询某个字段的最大值
    	• min()		表示查询某个字段的最小值
    	• avg()		表示查询某个字段的平均值
    	• sum()		表示求出某个字段的总和
    	• count()	表示求出某个字段的查询数量
    删除
    	// 根据主键删除
    	db('user')->delete(1);
    	// 条件删除
    	db('user')->where('id',1)->delete();
    

    22.数据库原生操作

    use think\Db;//导入Db类
    $res1=Db::query("select * from tb_user where id=1");							//查询返回数据结果
    $res2=Db::execute("update tb_user set username='2' where id=1");				//更新,成功返回更新的条数
    

    23.验证器的使用

    创建文件
    	|——admin
    		|——validate
    			|——User.php
    写入验证规则
    	<?php
    	namespace app\admin\validate;
    	use think\Validate;
    	
    	class User extends Validate{
    		protected $rule = [
    			'username' => 'require|max:20|unique:user|min:10|confirm:password|captcha',		
    		];
    		protected $message = [
    			'username.require' => '用户名不能为空',
    			'username.max' => '用户名不能超过20位',
    			'username.unique' => '用户名已存在',
    			'username.min' => '用户名不能少于10位',
    			'username.confirm' => '与密码不一致',
    			'username.captcha'=>'验证码错误',
    		];
    		//场景验证
    		protected $scene = [
    			'edit' => ['phone','email','catch','time'],
    			'add' => ['username'],
    		];
    	}
    	?>
    调用
    	$validate=validate('User');
    	if(!$validate->scene('add')->check($data)){
    		$this->error($validate->getError());
    	}
    

    24.登录验证

    创建文件
    	|——admin
    		|——controller
    			|——Common.php
    写入
    	<?php
    	namespace app\admin\controller;
    	use think\Controller;
    	
    	/*定义控制器初始化方法 _initialize ,
    	 * 在该控制器的方法调用之前首先执行。*/
    	class Common extends Controller{
    		public function _initialize(){
    			$this->checklogin();
    		}
    		public function checklogin(){
    			if(session('?loginUsername', '', 'admin')!=1){
    				$this->error("你没有权限,请先登录","login/index");
    			}
    		}	
    	}
    	?>
    调用
    	控制器直接继承即可
    	class Index extends Common{}
    

    25.跳转方式

    $this->success("添加成功!","user/index");
    $this->error("添加失败!");
    $this->redirect('catelist','',2,'纯跳转');
    

    26.验证码

    创建captcha.php设置验证码配置文件
    	|——conf
    		|——extra
    			|——captcha.php
    调用
    	(1)<div>{:captcha_img()}</div>
    	(2)<div><img src="{:captcha_src()}" alt="captcha" onclick="this.src='{:captcha_src()}'"/></div>	
    

    27.时间戳操作

    // 需要先引入头文件
    	use think\helper\Time;
    // 获得今天的零点时间戳和23点59分59秒的时间戳
    	list($start, $end) = Time::today();
    

    其他的可以查看开发文档的时间戳操作 在这里插入图片描述

    28.返回json数据

    return json(['data'=>$data,'code'=>1,'message'=>'操作完成']);
    

    如果您觉得本篇内容不错,可以点个关注,给个赞

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

     

           这一周一直忙于做实验室的网站,基本功能算是完成了。比较有收获的是大概了解了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 plain copy
    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>  

    可见,上面的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下面看结果吧!



    源码下载链接


    参考:

    http://blog.csdn.net/ruby97/article/details/7574851/


    展开全文
  • ThinkPHP框架 - 是由上海顶想公司开发维护的MVC结构的开源PHP框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。
  • ThinkPHP_3.2.2完整版

    2018-08-23 14:13:10
    ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发 布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开发体 验和易用性,并且拥有...
  • 1. ThinkPHP大事记 2017年4月27日,ThinkPHP5.1-beta.1发布 2017年12月31日, ThinkPHP5.1.0发布,标志着快速进入迭代期 2019年3月3日, ThinkPHP5.1已更新迭代到第35个版本(5.1.35) 2019年3月22日, ....
  • phpstudy的安装及ThinkPHP框架

    千次阅读 2018-07-19 10:34:24
    我们开始学习ThinkPHP框架,第一件事是要在自己的电脑上安装一个php的服务器,其实很简单。只需要下载一个phpstudy即可。  phpstud集成了Apache+MySQL+phpMyadmin,一次性安装,且不需要配置即可使用。是非常好用...
  • 严格来说,ThinkPHP无需安装过程,这里所说的安装其实就是把ThinkPHP框架放入WEB运行环境(前提是你的WEB运行环境已经OK) 下面我们开始安装ThinkPHP的运行环境: 1.安装WEB运行环境(phpStudy),点击下载,下载...
  • ThinkPhp5---实现后台登录界面

    千次阅读 2019-05-01 16:17:14
    1.解压"tp5"压缩包到"thinkphp_5.0.24_with_extend\"(E); 2.把解压好的"tp5文件夹"—>改名"demo(可以起其它的名字)"->把demo文件夹拷贝到WWW目录; 3.在浏览器中输入"http://127.0.0.1/demo/public"—>...
  • ThinkPHP新闻发布系统(前台+后台)绝对易学易用

    千次下载 热门讨论 2012-05-17 10:12:43
    通俗易懂的ThinkPHP文章发布系统源码(前台+后台) 主要是后台可以实现文章的非常方便的发布。 ThinkPHP框架+百度UEditor编辑器实现.具体使用方法参考ruby97的CSDN博客
  • 虽然该漏洞利用需要有几个前提条件,但鉴于国内使用ThinkPHP框架的站点数量之多,该漏洞还是存在一定的影响范围。由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞。 漏洞...
  • ThinkPHP

    2016-11-18 08:30:15
    什么是ThinkPHP? ThinkPHP的获取 ThinkPHP项目搭建教程 做法
  • ThinkPHP开发大型商城

    万人学习 2016-01-25 17:27:53
    它诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。早期的思想架构来源于Struts,后来经过不断改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和...
  • ThinkPHP3.0 完全开发手册 chm 消耗0积分

    千次下载 热门讨论 2012-04-06 11:15:29
    ThinkPHP 3.0正式版完全开发手册 CHM格式 如果下载解压后无显示,请单击右键->属性:单击常规标签下方的“解除锁定”,然后“应用”,“确定”,即可查看 -------------------- 华丽的分割线 ---------------------...
  • 基于thinkphp5开发的微信线上答题

    万次阅读 2018-05-05 22:36:18
    thinkphp 链接:https://pan.baidu.com/s/1v2tFcZ5ha5uqrHl_sIsg3w 提取码:42mx public/static 链接:https://pan.baidu.com/s/1aS4E660eHZH92H_kpR8aXA 提取码:m7tt 最近学校要求应五四青年节做一个微信...
  • 使用ThinkPHP框架快速开发网站(多图)

    万次阅读 多人点赞 2012-05-17 10:30:05
    使用ThinkPHP框架快速搭建网站    这一周一直忙于做实验室的网站,基本功能算是完成了。比较有收获的是大概了解了ThinkPHP框架。写一些东西留作纪念吧。如果对于同样是Web方面新手的你有一丝丝帮助,那就更好了...
  • 上一篇我们学习了Windows下Nginx+PHP5+ThinkPHP_3.2.1的安装与配置,现在来要理清ThinkPHP的目录结构及访问规则,创建第一个控制器,弄懂控制器的访问规则,修改惯例配置;ThinkPHP的默认模块名称是“Home”,也就是...
1 2 3 4 5 ... 20
收藏数 71,576
精华内容 28,630
关键字:

thinkphp