tp5学习笔记1

1、TP架构的概述

ThinkPHP 使用了MVC模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。

2、URL解析

http://   localhost  /index.php    /Index   /Index    /index
协议        域名       入口文件      模块     控制器    方法

3、入口文件
1、文件地址
/var/www/tp5/public/index.php

2、作用:
    负责整个TP的请求

4、应用

1、应用地址
    /var/www/tp5/application

2、作用:
    一个应用代表一个网站

5、模块(以前台为例)
1、模块地址
/var/www/tp5/application/index

2、作用:
    网站所有的前台相关都与其有关

3、新建后台模块

    a、在应用目录下(/var/www/tp5/application)新建admin目录


    b、在admin目录下新建model、view和controller


    c、在Controller目中新建Index控制器(Index.php)

    d、在Index.php 中书写代码
        // 声明命名空间
        namespace app/admin/controller;
        // 声明控制器
        class Index{
            public function index(){
                return "我是后台的控制器";
            }
        }

    e、通过地址栏访问
        http://localhost/index.php/Admin/Index/index

6、控制器
1、控制器目录
/var/www/tp5/application/index/controller

2、作用:
    书写业务逻辑

3、新建控制器(以前台为例)

    a、正前台控制器目录(/var/www/tp5/application/index/controller) 下新建User.php

    b、在控制器中能书写代码
        <?php 
        // 声明命名空间
        namespace app\index\controller;
        // 声明控制器
        class User{
            // index 方法
            public function index(){
                return "我是前台User控制器中的index方法";
            }
        }
    c、地址栏访问    
        http://localhost/index.php/Index/user/index

    d、注意:
        1、控制器的文件名必须首字母大写

        2、控制中必须声明命名空间

        3、控制器中类名必须和文件名一致

7、操作(方法)
1、操作地址
操作一般都在控制器的文件中

2、新建一个操作(以前台index控制器为例)

    1、打开前台index控制器(/var/www/tp5/application/index/controller/Index.php)

    2、在控制器新建test方法
        public function test(){

            return "我是用户自己创建的方法";
        }

    3、地址栏访问
        http://localhost/index.php/Index/Index/test

8、模型(数据模型)

1、数据模型地址
    /var/www/tp5/application/index/model

2、作用:
    负责数据库相关的处理

9、视图(页面)

1、视图地址
    /var/www/tp5/application/index/view

2、作用:
    其实就是网站页面

10、命名空间
与目录有关(以前台index控制器命名空间为例)

/var/www/tp5/application/index/controller

namespace app\index\controller;

11、跨控制器调用

1、使用命名空间

    $model=new \app\admin\controller\Index;

    echo $model->index();


2、使用use

    use \app\admin\controller\Index as AdminIndex;
    $model=new AdminIndex();

    echo $model->index();

3、系统方法
    # 系统方法一般在(/var/www/tp5/thinkphp/helper.php)

    $model=controller('admin/Index');

    echo $model->index();

12、调用方法
1、调用当前控制器的test方法

    1、使用面向对象的技术
        echo $this->test();
        echo self::test();
        echo Index::test();

    2、使用系统方法
        echo action('test');

2、调用User控制器下的index方法
    1、命名空间
        $model=new \app\index\controller\User;

        echo $model->index();

    2、使用系统方法
        echo action('User/index');

3、调用后台模块下Index控制器index方法
    1、命名空间
        $model=new \app\admin\controller\Index;
        echo $model->index();

    2、使用系统方法
        echo action('admin/Index/index');

13、主要分析TP执行流程
1、入口文件(/var/www/tp5/public/index.php)
作用:
1)定义目录常量

        2)加载框架引导目录
2、加载框架的引导文件(/var/www/tp5/thinkphp/start.php)
    作用:
        1) 引导基础文件

        2) 对应用进行运转

3、加载框架的基础引导文件(/var/www/tp5/thinkphp/base.php);
    作用:
        1) 加载系统常量

        2) 引入loader类 (/var/www/tp5/thinkphp/library/think/loader.php)


        3) 引入环境变量

        4) 注册自动记载机制

        5) 注册异常处理机制(/var/www/tp5/thinkphp/library/think/Error.php)

        6) 记载惯例配置(/var/www/tp5/thinkphp/convention.php)

4、运行应用(/var/www/tp5/thinkphplibrary/think/App.php) 下的run方法;

    1、第一步: 加载当前控制器中 initCommon() 方法


    2、第二步: 加载当前控制器中 init() 方法
        1、加载各种配置文件
        2、加载公共文件
        3、加载语言包

    3、第三步: 设置时区

    4、第四步: 加载当前控制器 routeCheck() 方法 路由检测

    5、第五步: 调用控制器中exec方法
        根据用户请求进行分发处理

    6、第六步: 根据不同请求类型记载对应文件 module方法

        加载到对应的控制器和对应方法

5、响应输出
    用户看到的所有界面就加载出来了
  • thinkCMF上传图片

    thinkCMF上传图片 1、要使用这个功能,首先要引入框架自带的admin.js或者frontend.js文件 再上传的地方添加 1234567891011121314151617181920212223242526...

    thinkCMF上传图片
  • 小程序开发

    小程序开发 获取access_token要将申请的测试号的appid和secret填在相应的位置,而不是填公众号的appid和secret。

    小程序开发
  • global与GLOBAL区别

    global与GLOBAL区别 1.有些场合需要全局变量的出现,如下例子:<?php$name=”why”;//定义变量name,并初始化function echoName(){//试图引用函数外面的变量echo “m...

    global与GLOBAL区别
  • PHP取整

    PHP取整 1.直接取整,舍弃小数,保留整数:intval($a);2.四舍五入取整:round($a);3.向上取整,有小数就加1:ceil($a);4.向下取整:floor($a)。

    PHP取整
  • 为什么PHP变量以$开头

    PHP变量 ​ Because PHP was based on Perl which used $, though the symbols Perl used were meaningful andplenty us...

    为什么PHP变量以$开头
  • PHP超全局变量

    PHP超全局变量 PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。 PHP 超级全局变量列表: $GLOBALS $G...

    PHP超全局变量
  • 面试准备

    PHP面试题目 1、阿里PHP面试​ https://blog.csdn.net/qishouzhang/article/details/47007177 1、get与post的区别​ 最直观的区别就是GET把参数...

    面试准备
  • tp5学习笔记9

    tp5学习笔记9 1、验证器1) 控制器中使用验证器 // 实例化验证器类 $validate=new Validate( [ &q...

    tp5学习笔记9
  • tp5学习笔记8

    tp5学习笔记8 1、视图a) 加载页面 1、继承系统控制器类 return $this->fetch(参数1,参数2,参数3,参数4); 参数1(字符串): 模板...

    tp5学习笔记8
  • tp5学习笔记7

    tp5学习笔记7 1、模型(model)数据模型 2、新建数据模型​ 1) 手动新建 在model目录下 新建 User.php // 声明命名空间 namespace a...

    tp5学习笔记7