个人笔记,摘抄--关于thinkphp5.1.43

Posted F1gh4

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了个人笔记,摘抄--关于thinkphp5.1.43相关的知识,希望对你有一定的参考价值。

关于tp5.1部分尝试


前言

尝试一下tp5.1,跟tp5.0有部分区别,就是记录一下

!!! 这是个人笔记,不全,建议只摘抄了部分我觉得重要的,以便以后来看看:

  • 更详细的请参考官网:
    https://static.kancloud.cn/manual/thinkphp5_1
  • 官网不好懂,而且有些地方不详细,建议先看下面这个视频,或者B站什么的搜搜:
    https://www.bilibili.com/video/BV17J411K7Zd

一、tp5.1的安装

参考:https://www.kancloud.cn/manual/thinkphp5_1/353948

安装好composer,且只能通过其和git进行下载

输入指令:

composer create-project topthink/think=5.1.* tp5_1
  • 1.可能需要换源,如果太慢的话。
  • 2.最后的那个"tp5"可以是自定义的。

二、使用步骤

  • 利用 phpstudy来作为中间件。



  • 已经创建成功。

  • 访问:

  • 访问 http://localhost/tp5_1/public/

三,tp5的目录结构

  • 熟悉的结构:
    -
  • 摘自官网:
www  WEB部署目录(或者子目录)
├─application           应用目录
│  ├─common             公共模块目录(可以更改)
│  ├─module_name        模块目录
│  │  ├─common.php      模块函数文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  ├─config          配置目录
│  │  └─ ...            更多类库目录
│  │
│  ├─command.php        命令行定义文件
│  ├─common.php         公共函数文件
│  └─tags.php           应用行为扩展定义文件
│
├─config                应用配置目录
│  ├─module_name        模块配置目录
│  │  ├─database.php    数据库配置
│  │  ├─cache           缓存配置
│  │  └─ ...            
│  │
│  ├─app.php            应用配置
│  ├─cache.php          缓存配置
│  ├─cookie.php         Cookie配置
│  ├─database.php       数据库配置
│  ├─log.php            日志配置
│  ├─session.php        Session配置
│  ├─template.php       模板引擎配置
│  └─trace.php          Trace配置
│
├─route                 路由定义目录
│  ├─route.php          路由定义
│  └─...                更多
│
├─public                WEB目录(对外访问目录)
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─thinkphp              框架系统目录
│  ├─lang               语言文件目录
│  ├─library            框架类库目录
│  │  ├─think           Think类库包目录
│  │  └─traits          系统Trait目录
│  │
│  ├─tpl                系统模板目录
│  ├─base.php           基础定义文件
│  ├─convention.php     框架惯例配置文件
│  ├─helper.php         助手函数文件
│  └─logo.png           框架LOGO文件
│
├─extend                扩展类库目录
├─runtime               应用的运行时目录(可写,可定制)
├─vendor                第三方类库目录(Composer依赖库)
├─build.php             自动生成定义文件(参考)
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件


  • 在application目录下放置所谓的模块,可以使用多模块模式,也可以使用单一模块,

  • 多模块中,可以设置不同的目录,在每个目录下设置MVC三层。可能适合复杂的项目。

  • 单模块中,只在application下设置三个MVC文件夹,在每一层中放置不同的php文件,使用单一模块需要在app.php中设置。可能适合简单的项目

  • 访问/public目录,
    -
    可以进入到该框架下的主页,

  • 将网站的主目录设置为/public可以,防止访问到其他的敏感信息的目录。
    进入/public

  • robots.txt用于表明禁止让百度等搜索引擎来搜索的文件,以及文件类型。有些敏感信息的泄露,基于一个网站的robots.txt。这个文件的处理和网站的安全有关。

进入router.php

  • 这里测试了一下该文件,即router.php是否为正常的文件。
  • php is_file()函数来检测该文件是否正常。

  • router.php在public中用于测试作用,测试后并跳转到入口文件。

关于架构

  • ThinkPHP支持传统的MVC(Model-View-Controller)模式以及流行的MVVM(Model-View-ViewModel)模式的应用开发,但无论采用何种模式,URL的规范仍然是统一的(官网)。
  • tp5.1的URL访问由路由决定,如果在
    (1)没有定义或匹配路由的情况下
    (2)并且没有开启强制路由模式的话
    则是基于:
http://serverName/index.php(或者其它入口文件)/模块/控制器/操作/参数/值…

控制器

控制器文件通常放在application/module/controller下面,类名和文件名保持大小写一致,并采用驼峰命名(首字母大写)。

  • 为了更方便使用,控制器类建议继承系统的控制器基类think\\Controller,虽然无需继承也可以使用。(可继承)

  • 控制器类文件的实际位置是

www\\tp5_1\\application\\index\\controller\\Index.php


  • 没有自定义路由的情况下,可以通过访问如下路由:
http://localhost/tp5_1/public/index.php/index

  • 此时注意下图中,后面这一片

    …/模块/控制器/操作/参数/值…
  • 模块指的是—》application进去后的第一个index文件夹,控制器也就是放在applacation/index中。这个文件夹是index,所以可以在/public/index中访问到:

  • 控制器也就是里面的controller,也是index,再加上index,仍然可以访问
  • 还有一个操作,也就是方法,可以查看给好的初始文件:public/applacation/index/controller/index.php
    也就是其首页文件:
  • Index是其主类,必须和index.php前面的index一样,可以小写,但是tp的命名规范要求首字母大写
  • 类中存在这两个函数,是官方默认给出的。等于再访问一个index可以访问到index方法:
  • 这也是网址中可以出现四个index的原因,这是官方默认的,可以自行更改。
  • index函数/方法。可以被访问到,那他下面的hello方法也可以被访问:

  • 自定义一个也是可以的:

  • 传参:
  • 上面的hello函数,定义了一个$name传参,默认为“ThinkPHP5”,这里对方法的传参依旧基于官方给出的例子:
  • 操作也就是方法,在这里是’hello’函数,如果要传参的话,需要以 /操作/参数/值 的形式,也就是:
../hello/name/值

模型和数据库

然后就是tp5的model模块,model模块可以操纵数据库

  • 在 /config/database.php中找到配置文件

  • 在此时,开始使用jetbrain的phpstorm,编写php更加方便

  • 在application下创建一个mysql文件夹作为模块,再在mysql中创建controller,和Database.php

    database.php 如下:

  • phpstorm输入Db时会自动加载相关的模块,也就是use think/Db

  • Db::name()中写入数据库的表名
    数据库如下:

    访问指定的路由:

    成功,从数据库中读取出所有的数据。

  • Db::table(),Db::name()有区别

  • 然后是,创建Model层,MVC中的Model一般是为了数据库交互设计的层

在application下创建一个model文件,在其下创建一个Test.php,主类为Test,这个名字必须与数据库中的该表名一样。也就是说数据库中的表为test.

  • 要继承model类:

    然后在之前的database.php中新增一个函数:
    直接写Test::select():

    访问效果是一样的:
  • 然后是数据库的基本操作,CRUD,tp5的一系列操作按照官网的说法:

增加数据

插入一条数据

按照官网:

直接实例化Model类,并直接赋值:

然后访问:

  • 或者在实例化的时候直接传入:
  • 并且在保存之后可以获取自增ID:

插入多条数据

使用saveAll函数:


  • 存在主键时,会认为是更新操作,所以,可以对于有主键的操作,可以在后面再加一个参数false.

更简单的新增方法

利用自带的insert函数:

  • 也有insertAll等方法,操作类似,更改主键等也类似:
  • 可以Ctrl点进Db类,去看看有哪些函数

删除数据

最常用的按照条件删除

Test::Where('id','=','3')->delete();

按照主键删除

根据模型删除

  • 根据模型删除,会删除模型的事件处理

$user = User::get(1);
$user->delete();

更新

查找并更新

  • 利用查找和save()函数,来更改
$test = Test::get(1);
$test->name     = 'thinkphp';
$test->email    = 'thinkphp@qq.com';
$test->save();
  • 或者利用update()来更改,语法比较简单,需要where函数来按照条件更新
 Db::name('test')->where('id','2')->update(['name'=>'已改']);

获取单个数据

// 取出主键为1的数据
$test = Test::get(1);
echo $test->name;

// 使用查询构造器查询满足条件的数据
$test = Test::where('name', 'thinkphp')->find();
echo $test->name;

获取多个数据

// 根据主键获取多个数据
$list = Test::all('1,2,3');
// 或者使用数组
$list = Test::all([1,2,3]);
// 对数据集进行遍历操作
foreach($list as $key=>$test)
    echo $test->name;

其他的参考官网,这些是主要的。

其他

  • inc() 和 dec()可以对字段增值或减值
//自增1
Db::name('test')->where('id','123')->setInc('id',1);
//自减1
Db::name('test')->where('id','123')->setDec('id',1);

视图

视图渲染:

模板渲染:

<?php
namespace app\\index\\controller;

use think\\Controller;
//必须继承Controller才能用原生的fetch()方法
class Index extends Controller

    public function index()
    
        // 不带任何参数 自动定位当前操作的模板文件
        return $this->fetch();
    

  • 或者说明需要访问的模板名称,及html文件的前缀,像thymeleaf模板引擎用法?
  • 并自动寻找该模块下view中的同名html,貌似官网说需要在view文件夹下再创建一个与模块同名的文件夹,比如这里就是index.

    访问:

视图赋值

这一片在官网的模板一节有,
直接用官网的示例:

利用assign()函数向前端传值:

  • 进入前端的index.html网页写上:
  • 用 @xxx 这种形式传递变量,也可以将数据库的信息传到前端,
  • 模板中的html文件在访问时,会被编译成php文件,所以在html文件中写上php代码,在访问控制器时依旧可以使用。
  • 编译好的php文件保存在runtime/temp目录下,可以去看看:


也可以清楚地看到其转换的形式。

  • 网站以php为后台时,可以在html文件中嵌入php代码,但执行的条件是,必须在php文件中调用,同时又不能让用户直接访问到html文件,thinkphp的模块化管理说不定对文件的安全访问有一定帮助。

以上是关于个人笔记,摘抄--关于thinkphp5.1.43的主要内容,如果未能解决你的问题,请参考以下文章

个人笔记,摘抄--关于thinkphp5.1.43

一些关于three.js的摘抄笔记

飞机上上网摘抄笔记

读书笔记----10日摘抄整理(10)

基于深度学习的表面缺陷检测方法综述-阅读笔记/摘抄

有关人生哲理英语美文摘抄