TP3框架

tp3简介

在国内的thinkPHP是一个非常不错的框架,很多的PHP程序员入门的第一个框架就是thinkPHP,俗称tp框架。并且这个框架也是最好掌握MVC开发思想的框架,学习起来的成本也是很低的。

目前这个框架存在两个大的版本:

  • tp3
  • tp5

注意:tp5是不兼容tp3,也就是说之前使用的tp3开发的项目是没有直接升级到tp5。并且tp5是完全参照laravel框架进行了编写的。

一般来说如果去企业上班新的项目肯定都是tp5,但是一些老的项目还是tp3,并且目前情况说tp3还会存活很长一段时间。

下载

ThinkPHP3.2.3核心版

ThinkPHP3.2.3完整版

1538010465082

下载后

1538010508360

部署

注意:tp3不能在PHP7下运行。

创建虚拟主机

1538010556138

1538010650440

浏览器访问

1538010679084

目录结构

整体规划

1538010829654

入口文件

1538010987946

应用目录

1538011138270

公共文件

1538011266130

模块

1538011360788

后期我们写代码的时候,基本上都只在模块里面进行书写,如果出于业务考虑,可以在增加一些模块。

控制器学习

我们学习的是一个MVC的产品,那么在学习的时候,学习的顺序是有讲究:

用户能够直接访问的是MVC里面的哪一个呢?

答:只能接触到的C,控制器。V是由控制器里面的业务代码决定是否载入。

开始从控制器学习,学习之后还要做一件事,如何调用控制器里面的方法?

如何调用控制器里面的方法?

为什么可以看到tp3的笑脸?

1538011637459

原理就是这样对上了。需要对访问规则做一个抽象。

在tp3里面的对于控制器下的方法访问有很==四种url模式== : 普通模式、PATHINFO、REWRITE和兼容模式

  1. PATHINFO模式是系统的默认URL模式,提供了最好的SEO支持,系统内部已经做了环境的兼容处理,所以能够支持大多数的主机环境。

    1
    域名/入口文件/模块的名称/控制器名称/方法名称?get传参

    这种模式其实对于搜索引擎来说是最喜欢。

  1. 普通模式, 一种使用的比较多的模式,也就是传统的GET传参方式来指定当前访问的模块和操作

    1
    域名/index.php?m=Home&c=Index&a=index

    m代表的是模块,传递一个模块的名称

    c代表的是控制器,传递一个控制器的名称

    a代表的动词(action),传递一个控制器里面的方法的名称

    1538011845165

  2. REWRITE模式是在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地址里面的入口文件index.php,但是需要额外配置WEB服务器的重写规则。

    如果是Apache则需要在入口文件的同级添加.htaccess文件,内容如下:

    1
    2
    3
    4
    5
    <IfModule mod_rewrite.c> 
    RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
    </IfModule>

    接下来,就可以用下面的URL地址访问了: http://localhost/home/user/login/var/value

  1. 兼容模式是用于不支持PATHINFO的特殊环境,URL地址是:

    http://localhost/?s=/home/user/login/var/value

    可以更改兼容模式变量的名称定义,例如:

    1
    'VAR_PATHINFO'  =>  'pathinfo'

    PATHINFO参数分隔符对兼容模式依然有效,例如:

    1
    2
    // 更改PATHINFO参数分隔符
    'URL_PATHINFO_DEPR'=>'-',

    使用以上配置的话,URL访问地址可以变成: http://localhost/?s=/home-user-login-var-value

方法调用的演示

快速入门测试,我们在Home模块的IndexController控制器文件增加一个test方法,然后在浏览器进行访问调用。

1538012029890

效果

1538011955347

控制器规范

思考:

  1. 控制器写在哪里?
  2. 控制器的文件如何命名?
  3. 控制器里面的代码如何书写?
  4. 控制器的如何被调用?

实操:

  1. 控制器写在哪里?

    1538012154947

  2. 控制器的文件如何命名?

    规则

    控制器名 : 首字母大写

    Controller : 控制器后缀

    1
    控制器名 + Controller.class.php

    1538012286641

  3. 控制器里面的代码如何书写?

    1538012615686

  1. 控制器的如何被调用?

    1. 域名/index.php?m=Home&c=User&a=index

    2. 域名/index.php/Home/User/index

      1538012683145

思考:我们现在是在Home这个模块写的控制器,如果处于业务需要,现在需要增加一个Admin模块,需要做一个后台首页的功能。则需要一个后台模块,一个后台的首页控制器。

  1. 建立一个Admin后台模块

    1538012817867

  2. 建立一个IndexController.class.php文件

    1538012851547

    注意:这里的内容我们需要修改

    1538012971866

  3. 在该控制器里面增加一个index方法,然后浏览器访问

    1538012949236

视图学习

视图规范

思考:

  1. 视图写在哪里?
  2. 视图文件如何命名?
  3. 视图里面的该写什么?
  4. 视图如何被载入?

实操:

  1. 视图写在哪里?

    1538014240033

  2. 视图文件如何命名?

    1538014301739

  3. 视图里面的该写什么?

    1. html标签

    2. 可以PHP代码

    3. 也可以使用PHP的内置的标签

      1538014387548

  1. 视图如何被载入?

    1538014441046

    效果

    1538014458341

分配变量到视图

思考:如何在视图中控制器方法里面的变量?

1538014908212

视图代码:

1538014927897

效果:

1538014935189

模型学习

数据库配置

思考:

模型是和数据库打交道的,那么模型和哪个数据库打交道?

答:我们先在框架完成数据库的配置。

1538015132314

我们希望TP3和上面的数据库打交道。

1538015322910

模型规范

当我们配置完成之后,在考虑模型的事?

  1. 模型写在哪里?
  2. 模型文件如何命名?
  3. 模型里面的内容如何编写?
  4. 模型如何被实例化?
  1. 模型写在哪里?

    1538015376299

  2. 模型文件如何命名?

    1538015446287

  3. 模型里面的内容如何编写?

    1538015634239

  4. 模型如何被实例化,调用模型的方法,获取数据

    1538015958799

  5. 效果

    1538015982388

模型常见方法

  1. select方法:该方法是用于获取所有的记录信息
  2. field方法:获取指定的字段信息
  3. find方法:获取单条记录信息

建议看一下手册:

1538018425283

模型简洁调用

D方法

用于数据模型的实例化操作

1538018674611

M方法

用于数据模型的实例化操作,由于不需要加载具体的模型类,所以性能会更高。

1538018878618

注意:

  1. 这里的M函数得到实例对象其实是系统Model.class.php类的实例。

  2. 在我们实例D或者M的时候,其实没有严格的要求,一般M实例化系统的Model,D实例化的我们自定义的模型。但是需要注意的是,D也可以实例化系统模型。

    1538019116624

总结

通过上面的学习,我们学会了Tp3里面的MVC这种开发思想。