2019-11-11学习笔记

安装TP5.0
  a)源代码包下载
    在thinkphp官网下载(www.thinkphp.cn)下载 完整版本的TP5.0

  b) composer 安装
    切换到网站的根目录
    切换国内镜像 composer config -g repo.packagist composer https://packagist.phpcomposer.com
    下载源码包composer create-project topthink/think composer_tp5 --prefer-dist
                               项目名
  c) git 安装TP5.0
    首先命令行切换到网站根目录
      拷贝项目仓库git clone https://github.com/top-think/think git_tp5
      切换到git_tp5目录下
      拷贝核心框架代码 git clone https://github.com/top-think/framework thinkphp

1.目录结构
|--applcation 应用目录 是整个网站的核心目录
|-----|-----index 前台目录
|-----|-------|----controller 控制器
|-----|-------|----modle 数据模型
|-----|-------|----view 页面
|-----|-----admin 后台目录
|--extend 扩展类库目录
|--public 静态资源和入口文件
|-----|-----static 存放静态资源 css js img
|-----|-----index.php 入口文件
|--runtime 网站运行临时目录
|--tests 测试目录
|--thinkphp TP框架的核心文件
|-----|-----lang 语言包
|-----|-----library TP核心文件
|-----|-----tpl 模板页面
|--vendor 第三方扩展目录

2. URL地址了解
  http://www.tp.com   /index.php     /index     /Index        /index
    域名        入口文件      前台   前台控制器   方法

3.了解TP开发模式
  (0) 开启调试模式 application\config.php
    app_debug' => true,
  (1) 连接数据库 application\database.php
  (2)在控制器中书写代码
  (3)视图页面

2019-11-12学习笔记

1.TP架构的概述
  Thinkphp使用了MVC模式,她强制性的使应用程序的输入 处理和输出分开.使用MVC应用程序被分成三个核心部件:模型(M) 视图(V) 控制器(C),他们各自处理自己的任务

2.入口文件 ( public\index.php)
  入口文件负责整个TP的请求

3.应用 整个application文件
  一个应用代表一个网站

4.模块(以前台为例)模块地址在(application\index)
  网站的所有前台相关的都与其有关

  新建后台模块
    在应用目录下(application下)新建一个admin目录
    在admin目录下新建model view controller目录

    控制器中新建一个Index.php控制器
    重复操作,声明命名空间,声明控制器,声明方法

    通过地址栏访问http://www.thinkphp.com/index.php/admin/Index/index

5.控制器 控制器目录在(application\index\controller)
  书写业务逻辑

  //在controller下新建一个User.php控制器,里面应该先写命名空间
  namespace app\index\controller
  //声明控制器(控制器类名必须跟文件名一致)
  class User{
  //inedx方法
    public function index(){

    }
  }

  地址栏访问 http://www.thinkphp.com/index.php/index/User/index

  注意事项:
    a.控制器的文件名必须首字母大写
    b.控制器必须声明命名空间
    c.控制器中类名必须和文件名一致

6.操作方法
  操作地址:一般都是在控制器的文件中

  新建一个操作(以 前台Index控制器为例)
    打开前台控制器(application\index\controller\Index.php)
    在控制器中新建test方法
  地址栏访问

7.模型(一般都只数据模型 以 前台模型为例)
  模型的地址(application\index\model)
  作用:负责数据库的相关的处理

8.视图(页面 以 前台页面)
  视图地址(application\index\view)
  作用:就是网站的页面

9.命名控制
  与目录有关(以 前台index控制器命名空间为例)
  地址 C:\composer\tp5\application\index\controller
  命名空间 namespace app \index\controller

10.跨控制器调用  

    调用当前模块的控制器例如(application\index\controller\Index.php)里面的index方法调用(application\index\controller\User.php)User控制器

      a.使用命名空间
         $model = new \app\index\controller\User;
        echo $model -> index();
      b. 使用use
        use app\index\controller\User
        $model = new User;
        echo $model -> index();
      c. 使用系统的方法
        $model = controller('User');
        echo $model -> index();
    调用后台模块的控制器例如(application\index\controller\Index.php)里面的index方法调用(application\admin\controller\Index.php)Index控制器
    a. 使用命名空间
      $model = new \app\admin\controller\Index;
       echo $model -> index();
    b. 使用use
      use app\admin\controller\Index as AdminIndex ------->与当前的控制器名Index同名的时候需要起别名
      $model -> new AdminIndex;或($model -> AdminIndex())
      echo $model -> index();
    c.使用系统方法
       $model -> controller('admin/Index'); 注意注意 '/'一定不能错,不然会打印不出来
      echo $midol -> index();
11.调用方法
  调用当前控制器中的方法例如application\index\controller\Index.php下的index方法)里面的index方法调用(application\index\controller\Index.php下的test方法)
    使用面向对象的方法
      a. echo $this -> test();
      b. echo self::test();
      c. echo Index::test(); ---------> Index是当前的控制器
    使用系统方法
      d. echo action('test');

  调用同一个模块下的其他控制器的方法例如(application\index\controller\Index.php下的index方法)里面的index方法调用(application\index\controller\User.php下的test方法)
    使用命名空间
       $model = new \app\index\controller\User;
       echo $model -> test();
    使用系统方法
      echo action('User/test');
  调用其他模块的其他控制器的方法例如(application\index\controller\Index.php下的index方法)里面的index方法调用(application\admin\controller\User.php下的test方法)
    使用命名空间
       $model = new \app\admin\controller\User;
       echo $model -> tset();
    使用系统方法
      echo action('admin/User/test');
12.主要分析TP执行的流程
  a.入口文件(public\index.php)
    作用:定义应用目录常量,定义了一些基础配置
    加载框架的引导目录
      b.加载框架的引导文件(thinkphp\start.php)
        作用:对应用进行运转
        引导基础文件
        c.加载框架的基础引导文件(thinkphp\base.php)
          作用:加载了系统常量
          引入了一个loader类(thinkphp\library\think\Loader.php)
          引入环境变量
          注册自动加载机制
          注册异常处理机制(thinkphp\library\think\Error.php)
          加载管理配置(thinkphp\convention.php)
  d.运行应用(thinkphp\library\think\App.php)下的run方法
    做了什么操作:加载当前控制器中的initCommon()方法
    加载当前控制器的init()方法
    加载各种配置文件
    加载公共文件
    加载语言包
    设置时区
    记载当前控制器routeCheck() 方法 路由检测
    调用控制器中的exec方法
    根据用户请求进行分发处理
    根据不同请求类型加载对应文件 module方法
    加载到对应的控制器和对应的方法
  e.响应输出
    用户看到的所有界面就加载出来了

2019-11-15

1.配置文件的格式
  thinkphp支持多种格式的配置格式,但是最终都是解析为php数组
  我们主要的形式就是数组
    return[
      'name' => '',
      'age' => '',
    ]
2.配置
  a.惯例配置
    惯例配置的目录(thinkphp\convention.php)
    注意: 一般不建议修改惯例配置
  b.应用配置
    应用配置目录(application\config.php)
  c.扩展配置
    扩展配置目录(application\database.php)数据库配置目录 (application\extra\queue.php)用户可以自定义配置目录
    扩展配置其实就是对配置文件进行分目录管理
    读取database中的扩展项
      dump(config(扩展文件名.password));
      dump(config(database.password));
    读取所有的database扩展
      dump(config('database'));
      自定义扩展配置(application\extra)下可以新建user.php扩展项
  d.场景配置
    解决问题
      开发过程中可能在不同环境下进行开发
    如何使用
      修改应用配置(application\config.php)里面的第22行,应用模式状态
        'app_status' => 'home', 指的是家庭环境下
      在应用目录下新建(application)对应的文件名(home.php)
      在home.php里面书写相关配置
  e.模块配置
    解决问题
      每一个模块都有自己特有的配置
    如何使用(以前台模块为例)
      在前台模块下(application\index)新建一个config.php
      打开配置文件书写配置
        <?php
          return [
            'index' => '我是前台配置',
          ];
   f.动态配置
    系统方法
      //config('参数1','参数2');
      config('name','php开发');
    系统类
      \think\Config::get('name','php开发');

      use \think\Config;
      Config::set('name','php开发');
3.读取配置
  当惯例配置文件存储的是一条配置
    'name' => 'mryang'
  系统函数读取配置
    config('name');

  通过系统类读取配置 如果配置项存在直接输出 , 不存在输出为NULL
    \Think\Config::get('name');
    dump('\Think\Config::get('abc'));

  使用use
    use \think\Config;
    echo Config::get('name');

  当惯例配置文件存储的是数组
    people =>[
      'name' => 'mryang',
      'age' => 24,
      'sex' => '男',
    ]

  系统函数读取配置
    echo config('people'); 输出为数组里面的值

  通过系统类读取配置
    \Think\Config::get('people.name'); 输出数组里面的name值

  使用use
    use \think\Config;
    echo Config::get('people');

  读取所有配置
    dump(config());这样就可以读取所有配置

4.环境变量配置
  a.tp5.0支持环境变量配置
  b.设置环境变量配置
    打开网站的根目录(D:\www\tp5)新建.env
    书写环境配置(注意不支持中文)
      name = yunzhimeng
      age = 18
  c.读取环境配置
    命名空间
      dump(\think\Env::get('name'));
      dump(\think\Env::get('abc','不存在时使用默认值'))
      dump(\think)Env::get('database.type') 不能读取全部数组配置,只能读取数组中配置中的某一个
    使用use
      use \think\Env;
      dump(Env::get('name'));
      dump(Env::get('database.type')) 不能读取全部数组配置,只能读取数组中配置中的某一个
  d.如何使用
    打开配置文件
      use \think\Env
      return [
        //应用调试模式
        'app_debug' => Env::get('app_debug',false),
        //应用模式状态
        'app_status' => Env::get('app_status',''),
      ];

配置文件的加载顺序
优先级
动态配置 > 模块配置 > 场景配置 > 扩展配置 > 应用配置 > 惯例配置
加载顺序
惯例配置 > 应用配置 > 扩展配置 > 场景配置 > 模块配置 > 动态配置
配置的实现原理
后面的加载的配置,把前面同名覆盖

总结:
系统类(thinkphp\library\think)
Config 设置和获取配置文件
系统方法(thinkphp)
Controller 实例化控制器
action 调用模块的方法
config 设置和读取配置
dump 浏览器友好的变量输出

thinkphp5.0学习笔记的更多相关文章

  1. thinkphp5.0学习笔记(三)获取信息,变量,绑定参数

    1.构造函数: 控制器类必须继承了\think\Controller类,才能使用: 方法_initialize 代码: <?php namespace app\lian\controller; ...

  2. thinkphp5.0学习笔记(二)

    本文为公司制作API接口后台的小结! 1.命名注意事项: 不要使用易混淆的名字,如index,index01... 我喜欢用拼音... 比如: public function zhuce(Reques ...

  3. thinkphp5.0学习笔记(二)API后台处理与命名空间

    命名空间 先来看命名空间吧: 命名空间是学习TP的基础, <?php namespace app\lian\c1; class yi{ public $obj = "这是第一个空间里面 ...

  4. thinkphp5.0学习笔记(一)基础知识与URL访问

    1.目录结构: 其中thinkphp子目录是框架核心目录 thinkphp结构: 2.入口文件 默认自带的入口文件位于public/index.php 应用目录为application,其结构: in ...

  5. thinkphp5.0学习笔记(四)数据库的操作

    ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理.采用PDO ...

  6. DirectX 总结和DirectX 9.0 学习笔记

    转自:http://www.cnblogs.com/graphics/archive/2009/11/25/1583682.html DirectX 总结 DDS DirectXDraw Surfac ...

  7. 一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移

    不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.superviso ...

  8. vue2.0学习笔记之路由(二)路由嵌套+动画

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. vue2.0学习笔记之路由(二)路由嵌套

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. LNMP-Nginx配置SSL

    SLL工作流程: 浏览器发送一个https的请求给服务器: 服务器要有一套数字证书,可以自己制作(后面的操作就是阿铭自己制作的证书),也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以 ...

  2. 使用vsCode配合IAR搭建arm开发环境

    众所周知IAR的编辑功能就是个垃圾,但是不得不承认IAR的编译器相当的牛X,经常以稳定可靠而著称,为此我们把VSCODE强大的编辑功能和IAR结合一下来加快我们的开发周期. 一.下载VSCODE并安装 ...

  3. ajax结合sweetalert实现删除按钮动态效果

    目录 一.ajax结合sweetalert实现删除按钮动态效果 二.bulk_create批量插入数据 1. 一条一条插入 2. 批量插入 三.自定义分页器 一.ajax结合sweetalert实现删 ...

  4. Django之视图层与模板层

    目录 视图层 小白必会三板斧 HttpResponse render redirect JsonResponse 前后端分离 FBV CBV 给CBV加装饰器 模板层 模板语法 模板传值 过滤器 语法 ...

  5. pymysql的操作

    目录 python 操作mysql 安装pymysql 模块 sql注入问题 产生的原因 解决的方法 连接 查 增 修 删 索引 使用索引的作用 索引的本质 索引的底层原理 索引的种类 索引的创建 主 ...

  6. express 中间件的简单应用与实现

    express 中间件的简单应用与实现 看了慕课网双越老师的课之后结合自己的理解做了一些简单的总结,如有不恰当之处,欢迎指正. 提到 express 就不得不提到中间件,接下来就简单的介绍一下 exp ...

  7. Poco的介绍和入门教学

    版权声明:该文章为AirtestProject原创文章:允许转载,但转载必须注明“转载”并保留原链接 前言 前面我们已经介绍了基于图像识别的测试框架Airtest,通过图像识别,已经可以编写大部分的测 ...

  8. Jupyter 快捷键总结

    转载自https://www.cnblogs.com/hello-alan/p/11376325.htmlJupyter Notebook 有两种键盘输入模式.编辑模式,允许你往单元中键入代码或文本: ...

  9. JS---变速动画函数封装

    变速动画函数封装 匀速动画:每次步数都是10 (var step=10;) 变速(缓动)动画:每次的步数是用当前位置和目标位置相减 var step=(target-current)/10; 代码如下 ...

  10. k8s采坑记 - 解决二进制安装环境下证书过期问题

    前言 上一篇k8s采坑记 - 证书过期之kubeadm重新生成证书阐述了如何使用kubeadm解决k8s证书过期问题. 本篇阐述使用二进制安装的kubernetes环境,如何升级过期证书? k8s配置 ...