【Thinkphp 6】框架基础知识

这篇具有很好参考价值的文章主要介绍了【Thinkphp 6】框架基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境搭建

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer create-project topthink/think tp
php think run

框架基础规则

继承引入

use app\BaseController;

class coleak extends BaseController

use进行引入,然后继承基础的方法

单应用模式

入口文件(index.php)可以省略

【Thinkphp 6】框架基础知识

http://localhost:8000/coleak/test
http://localhost:8000/index.php/coleak/test

多应用模式

composer require topthink/think-multi-app

在app里新建文件夹,并将相应的控制器(controller)放到新建的文件夹下

遵守类名和文件名一致,空间名和文件夹名一致

【Thinkphp 6】框架基础知识

namespace app\cc\controller;
http://localhost:8000/cc/coleak/test

自定义路由

http://localhost:8000/coleak/hello/a

调试器

重命名为 .env

    public function c()
    {
        $arr=['id'=>1,"name"=>"coleak"];
        $name='coleak';

//        return "666".'21a1';

//        return json($arr);

//        dump($arr);
//        dump($name);

//        halt终止程序并输出dunp
//        halt($arr);
//        halt($name);
//
//        trace调试器中输出
        trace($arr);
        trace($name);
//        dump($ar);
    }

空控制器

在controller下面定义个Error.php

<?php
namespace app\cc\controller;
class Error{
    public function __call($name, $arguments)
    {
        // TODO: Implement __call() method.
        return "Error Requests!";
    }
}

视图

模板引擎安装

composer require topthink/think-view

看下composer.json

    "require": {
        "php": ">=7.2.5",
        "topthink/framework": "^6.1.0",
        "topthink/think-orm": "^2.0",
        "topthink/think-filesystem": "^1.0",
        "topthink/think-multi-app": "^1.0",
        "topthink/think-view": "^1.0"
    },

渲染模板

    public function t()
    {
        return view(1);
    }
//如果html文件名和方法名一致,即为t.html。则无需参数
    public function t()
    {
        return view();
    }

【Thinkphp 6】框架基础知识

facade代理

use think\facade\View;
    public function t()
    {
//        return view();
        return View::fetch();
    }
//或者直接使用(不推荐)
return \think\facade\View::fetch();

当方法使用驼峰命名法是,如testColeak,则对应的html文件应该为test_coleak

【Thinkphp 6】框架基础知识

变量传递

view.php

    'tpl_begin'     => '{',
    // 模板引擎普通标签结束标记
    'tpl_end'       => '}',
    // 标签库标签开始标记
    'taglib_begin'  => '{',
    // 标签库标签结束标记
    'taglib_end'    => '}',

语法

    public function testColeak(){
        View::assign("name","coleak");
        View::assign("age",19);
        return View::fetch();
    }
    
{$name}
{$age}

查看编译后的文件

在runtime/cc/temp

发现进行了一个htmlentities处理,不让html标签解析,进行原样显示

【Thinkphp 6】框架基础知识

让其解析则加一个|raw

{$name}
<br>
{$name|raw}

View::assign("name","<h1>coleak</h1>");

<?php echo htmlentities($name); ?>
<br>
<?php echo $name; ?>

默认值

{$a|default="coleak"}

数组按键取值

$arr=["name"=>"coleak","age"=>19];
View::assign("arr",$arr);
        
{$arr["name"]}-{$arr.age}

md5加密

{$arr["name"]|md5}-{:md5($arr.name)}

请求

request信息

 //http://127.0.0.1:8000/cc/c/test  
public function test()
    {
//        dump(Request::method());
        dump($this->request->method());
        dump($this->request->ip());
        dump($this->request->host());
        dump($this->request->scheme());
        dump($this->request->url());
        dump($this->request->root());
        dump($this->request->baseUrl());
    }
^ "GET"
^ "127.0.0.1"
^ "127.0.0.1:8000"
^ "http"
^ "/cc/c/test"
^ "/cc"
^ "/cc/c/test"

参数接收

//http://127.0.0.1:8000/cc/c/server/b/2?a=45
    public function server()
    {
        dump($this->request->get());
        //pathinfo传参
//      /参数名1/参数值1/参数名2/参数值2...
        dump($this->request->route());
        //通用的
        dump($this->request->param());
    }

^ array:1 [▼
“a” => “45”
]
^ array:1 [▼
“b” => “2”
]
^ array:2 [▼
“a” => “45”
“b” => “2”
]

生成URL

    public function url()
    {
        echo Route::buildUrl();
        echo "<br>";
        echo Route::buildUrl("coleak/testColeak",["name"=>"coleak","age"=>19]);
        echo "<br>";
        echo Route::buildUrl("coleak/testColeak",["name"=>"coleak","age"=>19])
        ->domain("www.baidu.com")
        ->suffix("phtml");
        echo "<br>";
        echo url("coleak/testColeak",["name"=>"coleak","age"=>19]);
    }
/cc/C/url.html
/cc/coleak/testColeak.html?name=coleak&age=19
http://www.baidu.com/cc/coleak/testColeak.phtml?name=coleak&age=19
/cc/coleak/testColeak.html?name=coleak&age=19

文件上传

上传及验证

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form action="" enctype="multipart/form-data" method="post">
    file:<input type="file" name="image">
    <br>
    <button>提交</button>
<!--    <input type="submit" value="upload">-->
</form>
</body>
</html>
<?php
namespace app\cc\controller;
use app\BaseController;
use think\facade\View;
use think\facade\Filesystem;

class Upload extends BaseController{
    public function upload(){
        if ($this->request->isPost())
        {
//            $file=$this->request->file("image");
//            dump($file);
            $file=$this->request->file();
            dump($file);
            $size=1000*1024;
            validate(["image"=>"image|fileSize:{$size}|fileExt:jpg"])
            ->check($file);
            $savefile=Filesystem::disk("public")->putfile("uploads",$file["image"]);
            dump($savefile);
            echo "successed";
        }else{
            return View::fetch();
        }
    }
}

验证功能

验证器

<?php
namespace app\validate;
use think\Validate;

class Student extends Validate{
    protected $rule=[
        'name'=>"require|chs|length:2,15",
        "age"=>'require|number|between:18,60'
    ];
    protected $message=[
      'name.require'=>"姓名为空",
        'age.require'=>"年龄为空",
        'name.chs'=>"姓名不为汉字",
        'name.length'=>"姓名长度错误",
        'age.number'=>"年龄不为数字",
        'age.between'=>"年龄不符合范围",
    ];
}
 public function add(){
        $arr1=["name"=>"coleakxiao","age"=>19];
        $arr2=["name"=>"小1","age"=>19];
        $arr3=["name"=>"小","age"=>11];
        $arr4=["name"=>"小小小","age"=>22];
        $stu=new Student();
//        if(!$stu->check($arr1))
//        {
//            echo $stu->getError().PHP_EOL;
//        }
//        if(!$stu->check($arr4))
//        {
//            echo $stu->getError().PHP_EOL;
//        }
//        echo "successed".PHP_EOL;

//        validate(Student::class)->check($arr4);
//        validate(Student::class)->check($arr1);//验证失败会抛出异常

        //匿名函数形式验证方式
        validate(
            ['name'=>"require|chs|length:2,15"],
            ['name.require'=>"姓名为空", 'name.chs'=>"姓名不为汉字", 'name.length'=>"姓名长度错误",]
        )->check($arr4);
//scene定义场景验证,function自定义接口验证
        try {
//            echo $aaa;
            validate(Student::class)->check($arr4);
            validate(Student::class)->check($arr1);
        }catch(ValidateException $e)
        {
            echo $e->getMessage();
        }
        catch (\Exception $e)//两次捕获不同的异常,验证异常放在普通的异常捕获前面
        {
            echo $e->getMessage();
        }
    }

表单令牌

public function form(){
        if($this->request->isPost() and $this->request->checkToken("__token__"))
        {
//            $r1=$this->request->checkToken("__token__");
//            dump($r1);
            //或者直接在验证器里面设置 'name'=>"require|chs|length:2,15|token:__token__"
            dump($this->request->param());
        }
        else {
            return View::fetch();
        }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">

    <input type="hidden" name="__token__" value="{:token()}" />
  name:<input type="text" name="user">
    <br>
  <br>
  <button>提交</button>
</form>
</body>
</html>

中间件

php think make:middleware Check

middleware.php中修改
\app\middleware\Check::class
    
        public function handle($request, \Closure $next)
    {
        dump(111);
//        if ($request->param())
    return $next($request);
    }

杂项

session

开启session中间件 \think\middleware\SessionInit::class

class coleak extends BaseController
	{
    public function ss1(){
        Session::set("name","coleak");
        $arr=["name"=>"coleak1","age"=>19,"sex"=>"男"];
        Session::set("arr",$arr);
    }
    public function ss2()
    {
        dump(Session::get("arr"));
        Session::delete("name");
        dump(Session::has("name"));
        dump(Session::all());
        Session::clear();
        dump(Session::all());
    }

在config/session.php配置session相关的属性文章来源地址https://www.toymoban.com/news/detail-426655.html

Cookie

    public function ss3()
    {
        Cookie::set("name","ayuexiao",3600);
        dump(Cookie::get("name"));
        Cookie::delete("name");
    }

到了这里,关于【Thinkphp 6】框架基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MyBatis篇】MyBatis框架基础知识笔记

    目录 ORM思想(对象关系映射思想) 初识MyBatis 什么是MyBatis呢? JDBC  VS  MyBatis代码  获取数据库连接对比  对表格查询操作: JDBC弊端 MyBatis,JDBC对比 MyBatis进一步介绍以及本质分析 JDBC编程的劣势,MyBatis提供了以下解决方案 MyBatis环境搭建 配置依赖案例演示: MyBatis环境搭建

    2024年02月09日
    浏览(54)
  • JVM-环境准备&性能指标&基础知识

    环境准备性能指标基础知识 环境准备 JDK — 工具 JDK(Java Development Kit) 是用于开发 Java 应用程序的软件开发工具集合,包括了 Java 运行时的环境(JRE)、解释器(Java)、编译器(javac)、Java 归档(jar)、文档生成器(Javadoc)等工具。简单的说我们要开发 Java 程序,就需要

    2024年02月07日
    浏览(57)
  • linux环境中conda操作基础知识

    2.1 创建新的环境 2.2 查看当前有哪些环境 2.3 切换到新创建的环境 2.4 退出当前环境 2.5 删除环境 2.6 查看当前环境安装了哪些包 2.7 conda删除包 三级标题 四级标题 五级标题 六级标题

    2024年02月16日
    浏览(39)
  • Three入门 【基础知识,并搭建第一个场景】

    哈喽小伙伴们,最近工作比较忙一直没有给大家更新,这篇文章开始会开启新的专栏 Three.js ,记录一下博主学习Three.js的过程;一起来看下吧。 Parcel 是 Web 应用打包工具,适用于经验不同的开发者。它利用多核处理提供了极快的速度,并且不需要任何配置。 首先通过 Yarn 或

    2024年02月08日
    浏览(111)
  • 【ASP.NET Core 基础知识】--MVC框架--Models和数据绑定

    Models和数据绑定在ASP.NET Core MVC中扮演着关键的角色,对于构建强大、灵活和可维护的Web应用程序至关重要。这一节我们就来讲一下。 一、Models 1.1 Models的定义和作用 在ASP.NET Core MVC中,Model是应用程序中用于表示数据结构和业务逻辑的一种抽象。Models充当了MVC(Model-View-Contr

    2024年01月23日
    浏览(57)
  • C++ Webserver从零开始:基础知识(三)——Linux服务器程序框架

    目录 前言 一.服务器编程基础框架 C/S模型 主要框架 二.I/O模型 阻塞I/O 非阻塞I/O 异步I/O 三.两种高效的事件处理模式 Reactor Proactor 四.模拟Proactor模式 五.半同步/半异步的并发模式 六.有限状态机 七.其他提高服务器性能的方法 池 数据复制 上下文切换和锁         这一章是

    2024年02月22日
    浏览(55)
  • odoo17基础培训1-odoo开发基础知识准备以及odoo17开发环境安装

    当我介绍客户使用odoo系统作为业务管理平台时,有时会被问到Odoo是什么? 简单点,可以这么说: Odoo是一套完整的系统,是一个开源框架,针对 ERP 的需求发展而来,适合定制出符合客户各种需求的ERP系统、电子商务系统、CMS、或者是网站。 由于 Odoo 的底层结构很强大,所

    2024年02月02日
    浏览(44)
  • 基础课19——客服系统知识库的搭建流程

    注意:我们在做业务数据收集时,往往是甲方提供给我们的,这时就需要确定一个标准,否则对知识库梳理工作会带来很大的难度,建议和甲方沟通确认一个双方都统一的知识库原材料。 在创建知识库时,我们最常见的就是把问题分为单轮、多轮,来满足不同场景的需求,如

    2024年02月05日
    浏览(43)
  • 云原生可观测框架 OpenTelemetry 基础知识(架构/分布式追踪/指标/日志/采样/收集器)...

    OpenTelemetry 是一个开源的可观测性框架,由云原生基金会(CNCF)托管。它是 OpenCensus 和 OpenTracing 项目的合并。旨在为所有类型的可观测信号(如跟踪、指标和日志)提供单一标准。 https://opentelemetry.io https://www.cncf.io https://opencensus.io OpenTelemetry 指定了如何收集遥测数据并将其发送到

    2024年01月16日
    浏览(62)
  • 【python基础知识】14.图书管理系统的搭建(类与对象实操)

    通过这个项目希望你可以学会用类与实例的方法编写程序,掌握面向对象编程的基本思维,为日后能处理更复杂的代码结构打牢基础。 我曾跟你提过,学Python,做项目是进步最快的。我没说的是:做项目总会遇到种种困难,想不通的逻辑,频频报错的代码。 所以,如果你在今

    2024年02月02日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包