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. 了解web漏洞-sql注入

    1:为什么要学web漏洞? 作为一个运维人员,日常工作就是保障服务器和网站的业务正常运行,平时也需要对服务器的安全工作加固,说到防护攻击问题,那么久必须去了解攻击者是怎么对服务器发动的一个流程,这样才 ...

  2. 【Element UI】使用问题记录

    [Element UI]使用问题记录 转载:https://www.cnblogs.com/yangchongxing/p/10750994.html 下载地址: https://unpkg.com/ ...

  3. servlet的三大作用域对象和jsp的九大内置对象及其四大作用域对象

    servlet的三大作用域对象: request(HttpServletRequest) session(HttpSession): application(ServletContext):tomca ...

  4. Python中最简单快捷的输出方式

    格式化输出最简单的方式之哑巴填充公式 name=ludundun age=25 print(f'hello {name},your age is {age}') 输出内容: hello ludundu ...

  5. eclipse配置svn导出项目

    eclipse安装svn 菜单栏help-->eclipse marketspace-->find中搜索subclipse,安装-->ok windows-->show vie ...

  6. Real World CTF一日游

    今天去感受了长亭举办的RWCTF现场,参加了技术论坛,也学到了很多的知识 比较有印象的就是 智能安全在Web防护中的探索和实践 阿里云安全防护构建的AI架构体系: 基线检测 基础过滤 异常检测 攻击识 ...

  7. 学习Python编程技术的流程与步骤,自学与参加培训学习都适用

     一.清楚学习目标 无论是学习什么知识,都要有一个对学习目标的清楚认识.只有这样才能朝着目标持续前进,少走弯路,从学习中得到不断的提升,享受python学习计划的过程. 虽然目前的编程语言有很多,但是 ...

  8. 解决Android调用相机拍照,要报“打开相机失败”查看debug日志显示“setParameters failed”的问题

    使用CameraLibrary项目,在部分手机或平板上不能正常使用,要报“打开相机失败”查看debug日志显示“setParameters failed”. 找到CameraView.java中的se ...

  9. 二、计算机数据表示&&校验码(简单了解)

    一.数据表示 机器数:各种数值在计算机中的表示形式.其特点是采用二进制计数器,数的符号用0和1标识,小数点则隐含,表示不占位置.机器数分为带符号数和无符号数.无符号数称为正数. 比如,十进制中的数 + ...

  10. JavaScript图形实例:四瓣花型图案

    设有坐标计算公式如下: X=L*(1+SIN(4α))*COS(α) Y=L*(1+SIN(4α))*SIN(α) 用循环依次取α值为0~2π,计算出X和Y,在canvas画布中对坐标位置(X,Y)描 ...