精华内容
下载资源
问答
  • ThinkPHP6项目基操目录

    万次阅读 多人点赞 2020-12-13 14:41:02
    遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产品发布/销售。 ThinkPHP6.0基于精简核心和统一用法两大原则在5.1的基础上对底层架构做了进一步的优化...

    前言

    ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,更注重易用性。遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产品发布/销售。

    ThinkPHP6.0基于精简核心和统一用法两大原则在5.1的基础上对底层架构做了进一步的优化改进,并更加规范化。由于引入了一些新特性,ThinkPHP6.0运行环境要求PHP7.1+,不支持5.1的无缝升级(官方给出了升级指导用于项目的升级参考)。

    主要新特性

    • 采用PHP7强类型(严格模式)
    • 支持更多的PSR规范
    • 多应用支持
    • ORM组件独立
    • 改进的中间件机制
    • 更强大和易用的查询
    • 全新的事件系统
    • 支持容器invoke回调
    • 模板引擎组件独立
    • 内部功能中间件化
    • SESSION机制改进
    • 缓存及日志支持多通道
    • 引入Filesystem组件
    • Swoole以及协程支持改进
    • 对IDE更加友好
    • 统一和精简大量用法

    本系列文章主要是针对于项目中使用较多的场景,提供较好的解决方案、较优的代码架构、编码方式、异常拦截处理等,对于第三方SDK的使用及与业务逻辑代码的解耦。

    目录


    ⭐️重磅推荐:免费商用电商系统

    😏想白嫖整个电商系统用来商用?
    🤑想有自己的商城实现财富自由?
    🤓想学习最佳实践提升自己技术?

    快来打开🚀 传送门 🚀,开源免费、完整示例带你快速入门,轻松二开,走上人生巅峰!👨‍🎓
    在这里插入图片描述

    展开全文
  • 环境搭建及ThinkPHP6.0的安装一、环境搭建二、安装ThinkPHP6.0 一、环境搭建 服务器:Nginx1.16.1 端口:80 数据库:MySQL5.7.26 端口:3307 PHP版本:V7.4.3 (TP6需要求PHP版本>7.1) 安装过程根据环境不同自行...

    环境搭建及ThinkPHP6.0的安装

    一、环境搭建

    服务器:Nginx1.16.1 端口:80
    数据库:MySQL5.7.26 端口:3307
    PHP版本:V7.4.3 (TP6需要求PHP版本>7.1)

    安装过程根据环境不同自行百度,建议新手使用集成环境phpStudy.
    PHPStudy官网小皮(点击跳转)

    二、安装ThinkPHP6.0

    6.0版本开始,必须通过Composer方式安装和更新,所以你无法通过Git下载安装。
    composer 安装方法不做介绍。

    安装稳定版:

    composer create-project topthink/think tp6
    

    更新框架:

    composer update topthink/framework
    

    生成目录:
    在这里插入图片描述
    访问浏览器:http://localhost/tp6/public/
    出现以下界面说明已安装成功。
    在这里插入图片描述


    ⭐️重磅推荐:免费商用电商系统

    😏想白嫖整个电商系统用来商用?
    🤑想有自己的商城实现财富自由?
    🤓想学习最佳实践提升自己技术?

    快来进入🚀 传送门 🚀,开源免费、完整示例带你快速入门,轻松二开,走上人生巅峰!👨‍🎓
    在这里插入图片描述

    展开全文
  • ThinkPHP6项目基操(6.数据库Db操作)

    千次阅读 2020-11-29 18:46:41
    .env文件数据库配置(根据自己的数据库信息修改): [DATABASE] TYPE = mysql HOSTNAME = 127.0.0.1 DATABASE = tp6_test USERNAME = root PASSWORD = root HOSTPORT = 3307 CHARSET = utf8 DEBUG = true 二、访问...

    一、数据库配置

    config目录下默认有个database.php文件,这里配置了默认的数据库信息:

    <?php
    
    return [
        // 默认使用的数据库连接配置
        'default'         => env('database.driver', 'mysql'),
    
        // 自定义时间查询规则
        'time_query_rule' => [],
    
        // 自动写入时间戳字段
        // true为自动识别类型 false关闭
        // 字符串则明确指定时间字段类型 支持 int timestamp datetime date
        'auto_timestamp'  => true,
    
        // 时间字段取出后的默认时间格式
        'datetime_format' => 'Y-m-d H:i:s',
    
        // 数据库连接配置信息
        'connections'     => [
            'mysql' => [
                // 数据库类型
                'type'            => env('database.type', 'mysql'),
                // 服务器地址
                'hostname'        => env('database.hostname', '127.0.0.1'),
                // 数据库名
                'database'        => env('database.database', ''),
                // 用户名
                'username'        => env('database.username', 'root'),
                // 密码
                'password'        => env('database.password', ''),
                // 端口
                'hostport'        => env('database.hostport', '3306'),
                // 数据库连接参数
                'params'          => [],
                // 数据库编码默认采用utf8
                'charset'         => env('database.charset', 'utf8'),
                // 数据库表前缀
                'prefix'          => env('database.prefix', ''),
    
                // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
                'deploy'          => 0,
                // 数据库读写是否分离 主从式有效
                'rw_separate'     => false,
                // 读写分离后 主服务器数量
                'master_num'      => 1,
                // 指定从服务器序号
                'slave_no'        => '',
                // 是否严格检查字段是否存在
                'fields_strict'   => true,
                // 是否需要断线重连
                'break_reconnect' => false,
                // 监听SQL
                'trigger_sql'     => env('app_debug', true),
                // 开启字段缓存
                'fields_cache'    => false,
            ],
    
            // 更多的数据库配置信息
        ],
    ];
    
    

    可以看到这里默认是采用mysql数据库,数据库配置信息先去env环境配置文件里读取,如果没有,则使用默认的参数。
    .env文件数据库配置(根据自己的数据库信息修改):

    [DATABASE]
    TYPE = mysql
    HOSTNAME = 127.0.0.1
    DATABASE = tp6_test
    USERNAME = root
    PASSWORD = root
    HOSTPORT = 3307
    CHARSET = utf8
    DEBUG = true
    

    二、访问数据库

    1. 使用门面模式的Db类

    新建Data控制器,这里需要注意的是使用的facade\Db类,和TP5使用的think\Db不同:

    <?php
    
    namespace app\controller;
    
    use app\BaseController;
    use think\facade\Db;
    
    class Data extends BaseController
    {
        public function index(){
            $result = Db::table("demo")->where("id",1)->find();
            dump($result);
        }
    }
    

    在这里插入图片描述

    2. 使用容器方式

    $result = app("db")->table("demo")->where("id",1)->find();
    

    三、数据库返回数据异常调试

    1. 打开APP_DEBUG

    .env文件中设置

    APP_DEBUG = true
    

    然后浏览器访问页面会在右下角有个调试按钮,点开可以看到SQL语句,如果返回数据有问题,可以检查生成的SQL语句是否有问题,也可以在可视化数据库管理工具中运行试下:
    在这里插入图片描述
    在这里插入图片描述

    2. 打印SQL语句

    fetchSql() 可以返回SQL语句:

    $result = Db::table("demo")->where("id",1)->fetchSql()->find();
    dump($result);
    

    在这里插入图片描述

    也可以使用getLastSql静态方法获取SQL语句:

    $result = Db::table("demo")->where("id",1)->find();
    dump(Db::getLastSql());
    

    打印结果同上。

    四、增删查改CURD操作

    1. 新增

    public function add(){
        $data = [
            "username" => "wangwu",
            "password" => "789"
        ];
        $result = Db::table("demo")->insert($data);
        dump(Db::getLastSql());
        dump($result);
    }
    

    在这里插入图片描述

    2. 删除

    public function delete(){
        $result = Db::table("demo")->delete(1);
        dump(Db::getLastSql());
        dump($result);
    }
    

    在这里插入图片描述

    3. 更新

    public function update(){
        $result = Db::table("demo")->where("id","2")->update(["password"=>"abc"]);
        dump(Db::getLastSql());
        dump($result);
    }
    

    在这里插入图片描述


    ⭐️重磅推荐:免费商用电商系统

    😏想白嫖整个电商系统用来商用?
    🤑想有自己的商城实现财富自由?
    🤓想学习最佳实践提升自己技术?

    快来进入🚀 传送门 🚀,开源免费、完整示例带你快速入门,轻松二开,走上人生巅峰!👨‍🎓
    在这里插入图片描述

    展开全文
  • ThinkPHP6项目基操(9.架构分层)

    千次阅读 多人点赞 2020-12-01 00:03:57
    架构分层一、分层意义二、代码架构三、common层设计 一、分层意义 意义我觉得最重要的是方便维护,如果代码没有分层,都是写在控制器里,包括了各种参数校验,各种情景判断,各种数据查询返回结果不同,十分混乱,...

    一、分层意义

    意义我觉得最重要的是方便维护,如果代码没有分层,都是写在控制器里,包括了各种参数校验,各种情景判断,各种数据查询返回结果不同,十分混乱,出现问题很难定位,修改需求十分头疼,良好的分层架构可以解决后顾之忧。

    二、代码架构

    在这里插入图片描述
    这里借用了某课网老师的图,我又重新画了一遍,我们把代码分为以上5个模块,它们的作用分别为:

    模块作用
    控制器 controller负责调用业务层,返回组装数据给视图层或api接口
    业务逻辑层 business负责调用第三方库或模型层获取数据
    基础库 lib负责封装特定功能的库或引用第三方类库
    模型层 model负责连接数据库返回数据
    视图层 view负责返回数据到前台

    三、common层设计

    有些模块对于多个应用是可以公用的,所以可以创建一个common目录存放所有应用公共的文件,common目录与其他应用目录同级。如business、lib、model等。

    注意:修改文件目录,记得修改文件命名空间和引用该文件的地方。
    在这里插入图片描述
    考虑到后面操作数据可能会用到redis等,所以这里对model再分层。

    四、实践代码

    Model:

    <?php
    
    namespace app\common\model\mysql;
    use think\Model;
    
    class Demo extends Model
    {
        public function getDemoDataByCategoryId($cateId, $limit = 10){
            return $this->where("cate_id", $cateId)->limit($limit)->select()->toArray();
        }
    }
    

    Business:

    <?php
    
    namespace app\common\business;
    use app\common\model\mysql\Demo as DemoModel;
    
    class Demo
    {
        public function getDemoDataByCategoryId($cateId, $limit = 10){
            $model = new DemoModel();
            $results = $model->getDemoDataByCategoryId($cateId, $limit);
            if(empty($results)){
                return [];
            }
            return $results;
        }
    }
    

    controller:

    <?php
    
    namespace app\demo\controller;
    
    use app\BaseController;
    use app\common\business\Demo;
    
    class Index extends BaseController
    {
        public function test(){
            $cateId = $this->request->param("cate_id",0,"intval");
            if(empty($cateId)){
                return show(config("status.error"), "参数错误");
            }
            $demo = new Demo();
            $results = $demo->getDemoDataByCategoryId($cateId);
            return show(config("status.success"), "ok", $results);
        }
    }
    

    ⭐️重磅推荐:免费商用电商系统

    😏想白嫖整个电商系统用来商用?
    🤑想有自己的商城实现财富自由?
    🤓想学习最佳实践提升自己技术?

    快来进入🚀 传送门 🚀,开源免费、完整示例带你快速入门,轻松二开,走上人生巅峰!👨‍🎓
    在这里插入图片描述

    展开全文
  • 模型一、模型的定义及基本使用二、模型查询及其他使用1. new 模型对象2. 模型获取器 一、模型的定义及基本使用 与Db操作数据库相比,使用模型Model类更方便。 ...<?...namespace app\model;...在控制器中使用模型类:
  • 栏选择项目目录,如果是 thinkphp5 版本以上一般要解析到 public目录下,  然后点击 新增, 再点击 保存设置并生成配置文件 3、点击 其他选项菜单 ,选择 打开host, 在hosts文件尾部追加刚才 设置 ...
  • 实战部分 部署后台静态页面模板及后台登录页面前言一、部署静态资源到项目1.新建后台静态资源文件夹二、后台登录页面1. 目录结构2. 模板字符串替换配置 前言 网站后台一般是在基础静态页面上开发,将静态页面插入...
  • thinkPHP6源码.zip

    2019-06-10 20:45:22
    这是我使用composer下载的thinkphp6源码,欢迎大家来下载。
  • ThinkAdmin v6基于v1-v5版本的积累,结合ThinkPHP 6.0的思维重新构建,减少大量原非必需的组件,自建存储层、服务层及任务机制,增加了许多友好指令!ThinkAdmin v6经历了数个项目实践与测试,不停调整,目前系统...
  • ThinkPHP6项目基操(8.多应用模式)

    千次阅读 2020-11-30 22:55:20
    默认安装的TP6是但应用的,如果需要使用多应用模式,需要安装插件。 一、 安装多应用模块 composer require topthink/think-multi-app 二、 修改应用目录结构 之前单应用app目录结构为: 安装多应用插件后,可以...
  • TP6 有内置验证码插件,只需简单安装和配置即可使用,而且验证码的验证也非常方便,下面开始表演。 一、安装验证码 composer require topthink/think-captcha 二、模板中使用 将原来静态页面的验证码图片替换为{:...
  • 根目录填写项目目录到public目录 注意勾选同步hosts 确认PHP版本 > 7.1.0 重启Nginx服务器 可以直接访问 http://tp6.com/index.php/index/test (index/test是写在index控制器下的test方法) 二、隐藏index.php ...
  • 全局中间件2. 应用中间件3. 路由中间件4. 控制器中间件5. 内置中间件四、中间件使用 -- 后台登录页面跳转流程1. 创建Auth中间件2....一、定义中间件 <... public function handle($request, \Closure $next) ...
  • 不可预知的內部异常处理一、不可预知异常二、解决方案:1. 修改app目录下的Exception... throw异常处理 一、不可预知异常 如果方法里使用未定义的字段: public function aa(){ echo $aa; } 访问页面就会出错: ...p
  • 控制器获取请求参数一、新建 Demo 控制器二、获取参数的方法 一、新建 Demo 控制器 <?php namespace app\controller; use app\BaseController; class Demo extends BaseController { public function ...req
  • thinkphp6项目使用phpqrcode生成二维码

    千次阅读 2020-06-06 16:36:04
    下载完之后把文件解压到根目录下的vendor中 需要用到的参数: 第一个参数$text,就是代码里的URL网址参数, 第二个参数$outfile默认为否,不生成文件,只将二维码图片返回,否则需要给出存放生成二维码图片的路径 ...
  • THINKPHP项目源代码

    2015-09-29 16:30:42
    THINKPHP项目源代码 适用于新手学习框架和前端的开发
  • 项目中的自定义异常处理总结 错误页面&API错误前言一、异常分类1. 控制器找不到2. 方法找不到3. 请求资源不存在4. 系统內部异常、HTTP异常等二、异常处理1. 前置处理2. 异常处理详细代码(1) 控制器找不到(2) ...
  • 文章目录前言1、 Mysql数据库注意2、thinkPHP模型使用事务 前言 事务操作在复杂的数据库操作的时候尤为重要,特别是在操作多张表的时候,如果某一步骤出错了,就会导致有脏数据,会很危险,比如A表操作完需要再操作B...
  • 封装API数据格式及业务状态码统一管理一、封装API数据返回格式二、业务状态码统一管理 一、封装API数据返回格式 我们在返回API数据的时候,一般是使用json格式输出,如上节处理找不到控制器或方法返回数据: ...
  • redis+token登录前言一、生成唯一token二、设置token并返回token到前端三、登录拦截器(需要登录/不需登录) 前言 登录一般可以使用session处理,它使用比较简单,但是一般用在web端比较多。如果需要考虑在多端运行,...
  • 然后看下项目根目录有个文件.example.env,这是官方提供的env示例文件,可以将它复制一份,然后重命名为.env文件,默认文件内容如下: APP_DEBUG = true [APP] DEFAULT_TIMEZONE = Asia/Shanghai [DATABASE] TYPE = ...
  • 返回值: 成功:返回1 失败:抛出异常 1.2 更新 // 方式1:save方法包含主键 $res = Db::name('user')->save(['id' => 7, 'username' => 'thinkphp1']); // 方式2:update方法where条件更新 $res = Db::name('user'...
  • tp6:小项目6-源码

    2021-03-10 12:53:24
    tp6项目6
  • https://blog.csdn.net/zy1281539626/article/details/110847728
  • ThinkPHP6项目基操(15.实战部分 阿里云短信redis)

    千次阅读 多人点赞 2020-12-12 23:30:35
    阿里云短信调试 阿里云短信SDK PHP文档 安装SDK composer require alibabacloud/sdk
  • https://www.kancloud.cn/manual/thinkphp6_0/1037479 检查环境是否搭建好 php版本必须是7以上,最好是7.3 如果环境还没有搭建成功,则可以参考官方文档完成搭建。 安装tp6源码 如果你是第一次安装的话,在命令行...
  • thinkPHP模型使用事务 前言 事务操作在复杂的数据库操作的时候尤为重要,特别是在操作多张表的时候,如果某一步骤出错了,就会导致有脏数据,会很危险,比如A表操作完需要再操作B表,如果A表操作成功,B表操作失败...
  • TP6 令牌token使用1.1 表单提交1.2 AJAX提交2. TP6 令牌token验证2.1 路由验证2.2 控制器验证2.3 验证器验证 0. 前言 表单令牌是为了防止表单重复提交,防止跨站请求伪造(Cross-site request forgery),也被称为 ...
  • Filesystem文件上传 控制器: <?php namespace app\admin\controller; use app\BaseController; use think\facade\Filesystem;...use think\facade\View;...class Upload extends BaseController ... }

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,429
精华内容 3,371
关键字:

thinkphp6项目