1. 默认情况下,URL是不区分大小写的,访问规则:……模块/控制器/操作/参数/值,如果要访问驼峰法的控制器类BlogTest,则需要使用:blog_test
  2. MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。
  3. 我们可以简单的理解一个根命名空间对应了一个类库包。
    系统内置的几个根命名空间(类库包)如下: 名称 描述
    think 系统核心类库 thinkphp/library/think
    traits 系统Trait类库 thinkphp/library/traits
    app 应用类库 application
  4. 自动注册根命名空间:我们只需要把自己的类库包目录放入EXTEND_PATH目录(默认为extend,可配置),就可以自动注册对应的命名空间,例如:

    我们在extend目录下面新增一个my目录,然后定义一个\my\Test类( 类文件位于extend/my/Test.php)如下:

    namespace my;
    class Test
    {
    public function sayHello()
    {
    echo 'hello';
    }
    }

    我们就可以在控制器直接实例化和调用

    $Test = new \my\Test();
    $Test->sayHello();

    如果我们在应用入口文件中重新定义了EXTEND_PATH常量的话,还可以改变\my\Test类文件的位置,例如:在public下的index.php定义

    define('EXTEND_PATH','../vendor/');
    

    然后在vendor目录下面新增一个my目录,然后定义一个\my\Test类( 类文件位于vendor/my/Test.php

  5. 手动注册根命名空间:

    在应用入口文件中添加下面的代码:测试时提示错误》》Fatal error: Class 'think\Loader' not found in D:\www\test\my\public\index.php on line 18

    \think\Loader::addNamespace('my','../application/extend/my/');
    

    如果要同时注册多个根命名空间,可以使用:

    \think\Loader::addNamespace([
    'my' => '../application/extend/my/',
    'org' => '../application/extend/org/',
    ]);

    也可以直接在应用的配置文件中添加配置,系统会在应用执行的时候自动注册。测试未通过》》Class 'org\Test' not found

    'root_namespace' => [
    'my' => '../application/extend/my/',
    'org' => '../application/extend/org/',
  6. common模块是一个特殊的模块,默认是禁止直接访问的,一般用于放置一些公共的类库用于其他模块的继承。

  7. 应用公共文件:common.php
  8. 绑定默认访问模块和控制器
    可以在应用公共文件common.php中绑定模块和控制器,如下:
    // 绑定当前访问到index模块的index控制器
    define('BIND_MODULE','index/index');

     

  9. 一般入口文件以定义一些常量为主,支持的常量如下:
    路径常量

    DS 当前系统的目录分隔符
    THINK_PATH 框架系统目录
    ROOT_PATH 框架应用根目录
    APP_PATH 应用目录(默认为application)
    CONF_PATH 配置目录(默认为APP_PATH)
    LIB_PATH 系统类库目录(默认为 THINK_PATH.'library/')
    CORE_PATH 系统核心类库目录 (默认为 LIB_PATH.'think/')
    TRAIT_PATH 系统trait目录(默认为 LIB_PATH.'traits/')
    EXTEND_PATH 扩展类库目录(默认为 ROOT_PATH . 'extend/')
    VENDOR_PATH 第三方类库目录(默认为 ROOT_PATH . 'vendor/')
    RUNTIME_PATH 应用运行时目录(默认为 ROOT_PATH.'runtime/')
    LOG_PATH 应用日志目录 (默认为 RUNTIME_PATH.'log/')
    CACHE_PATH 项目模板缓存目录(默认为 RUNTIME_PATH.'cache/')
    TEMP_PATH 应用缓存目录(默认为 RUNTIME_PATH.'temp/')

    系统常量

    IS_WIN 是否属于Windows 环境
    IS_CLI 是否属于命令行模式
    THINK_START_TIME 开始运行时间(时间戳)
    THINK_START_MEM 开始运行时候的内存占用
    ENV_PREFIX 环境变量配置前缀

      

      

  10. 空操作是指系统在找不到指定的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化

    <?php
    namespace app\index\controller; class City
    {
    public function _empty($name)
    {
    //把所有城市的操作解析到city方法
    return $this->showCity($name);
    } //注意 showCity方法 本身是 protected 方法
    protected function showCity($name)
    {
    //和$name这个城市相关的处理
    return '当前城市' . $name;
    }
    }

      

  11. 空控制器的概念是指当系统找不到指定的控制器名称的时候,系统会尝试定位空控制器(Error),我们可以给项目定义一个Error控制器类

    <?php
    namespace app\index\controller;
    use think\Request;

    class Error{
     function index(Request $request){   //$request是一个Request对象
      $conl_name=$request->controller();  ////获取URL中的控制器名称
      halt($conl_name.'不存在');
      echo "这是个空控制器";
     }

    }

     

  12. 控制器初始化方法_initialize,前提是你的控制器要继承 think\Controller

  13. 如果继承了think\Controller类的话,可以直接调用think\Viewthink\Request类的方法

      // 获取包含域名的完整URL地址
    $domain=$this->request->url(true);
    halt($domain);

      

  14. 设置 beforeActionList属性可以指定某个方法为其他方法的前置操作

     protected $beforeActionList = [
    'first', //执行所有方法之前都进行first操作
    'second' => ['except'=>'hello'], //除了hello方法,执行其他方法之前都进行second操作
    'three' => ['only'=>'hello,data'], ////执行hello,data方法之前都进行three操作
    ];

      

  15. 重定向:\think\Controller类的redirect方法可以实现页面的重定向功能。

    //重定向到News模块的Category操作
    $this->redirect('News/category', ['cate_id' => 2]); //重定向到外部url
    $this->redirect('http://www.baidu.com');

      

     

     

    

TP手册学习第二天的更多相关文章

  1. TP手册学习第四内置天

    比较标签: eq:等于    heq:恒等于    gt:大于    lt:小于   (前面加上n则为否,如neq表示不等于)使用方法:{gt name="name" value= ...

  2. TP手册学习第三天

    命令行先在cmd进入项目目录,再执行命令 生成index模块的Blog控制器类库文件:php think make:controller index/Blog 如果仅仅生成空的控制器则可以使用:php ...

  3. TP手册学习第一天

    调试执行的sql语句 User::get(1); echo User::getLastSql(); 方法直接返回当前的查询SQL而不执行fetchSql echo User::fetchSql()-& ...

  4. Pandas 学习手册中文第二版·翻译完成

    原文:Learning pandas 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 面试求职交流群 72418 ...

  5. 前端学习 第二弹: JavaScript中的一些函数与对象(1)

    前端学习 第二弹: JavaScript中的一些函数与对象(1) 1.apply与call函数 每个函数都包含两个非继承而来的方法:apply()和call(). 他们的用途相同,都是在特定的作用域中 ...

  6. 二、Android学习第二天——初识Activity(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 一. Android学习第二天——初识Activity 昨天程序搭建成功以 ...

  7. python学习第二讲,pythonIDE介绍以及配置使用

    目录 python学习第二讲,pythonIDE介绍以及配置使用 一丶集成开发环境IDE简介,以及配置 1.简介 2.PyCharm 介绍 3.pycharm 的安装 二丶IDE 开发Python,以 ...

  8. python学习第二次笔记

    python学习第二次记录 1.格式化输出 name = input('请输入姓名') age = input('请输入年龄') height = input('请输入身高') msg = " ...

  9. 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第二周测验【中英】

    [中英][吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第二周测验 第2周测验 - 神经网络基础 神经元节点计算什么? [ ]神经元节点先计算激活函数,再计算线性函数(z = Wx + ...

随机推荐

  1. better-scroll不能滚动之 滚动监听-左右联动

    滚动监听 better-scroll 无法滚动的分析,直接翻到最后,看问题汇总,希望能帮助你解决. 借用一下人家这个好看的项目图片,做一个解释.左边的内容会跟右边的内容一起关联,点击左边的菜单,右边会 ...

  2. 基于 HTML5 的电力接线图 SCADA 应用

    在电力.油田燃气.供水管网等工业自动化领域 Web SCADA 的概念已经提出了多年,早些年的 Web SCADA 前端技术大部分还是基于 Flex.Silverlight 甚至 Applet 这样的 ...

  3. if与while相互嵌套,菱形*的实现.py

    """    *           * *         * * *       * * * *     * * * * *     * * * *       * ...

  4. org.springframework.data.redis.serializer.SerializationException: Cannot serialize;

    前言 本文中提到的解决方案,源码地址在:perfect-ssm,希望可以帮你解决问题. 问题描述 在Spring与Redis整合过程中,出现了如下报错: org.springframework.dat ...

  5. SSE图像算法优化系列十三:超高速BoxBlur算法的实现和优化(Opencv的速度的五倍)

    在SSE图像算法优化系列五:超高速指数模糊算法的实现和优化(10000*10000在100ms左右实现) 一文中,我曾经说过优化后的ExpBlur比BoxBlur还要快,那个时候我比较的BoxBlur ...

  6. Java string和各种格式互转 string转int int转string

    Java string和各种格式互转 string转int int转string 简单收集记录下 其他类型转String String s = String.valueOf( value); // 其 ...

  7. CTF---Web入门第十题 Once More

    Once More分值:10 来源: iFurySt 难度:易 参与人数:4782人 Get Flag:2123人 答题人数:2166人 解题通过率:98% 啊拉?又是php审计.已经想吐了. hin ...

  8. 【WC2013】糖果公园

    Candyland 有一座糖果公园,公园里不仅有美丽的风景.好玩的游乐项目,还有许多免费糖果的发放点,这引来了许多贪吃的小朋友来糖果公园玩. 糖果公园的结构十分奇特,它由 nn 个游览点构成,每个游览 ...

  9. bzoj 3065: 带插入区间K小值(分块)

    Description 从前有n只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力a[i].跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴.这时跳蚤国王决定理性愉悦一下,查询区间k小值.他每次向它 ...

  10. [hdu5632][BC#73 1002]Rikka with Array

    点开BC发现今晚没比赛..然后似乎上一场有数位DP?...(幸好我没去 一开始被BCDcode那题的思路带歪了..后来发现得把n转成二进制才能搞TAT 题目大概是要求一种类似逆序对的鬼东西: 有一个长 ...