阅读(15157)

tp3.2.3的架构模块

最后一次修改 2018年05月08日

一.url模式

        ThinkPHP支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式,可以设置URL_MODEL参数改变URL模式。

        1.普通模式:


普通模式也就是传统的GET传参方式来指定当前访问的模块和操作,例如: http://localhost/?m=home&c=user&a=login&var=value

m参数表示模块,c参数表示控制器,a参数表示操作(当然这些参数都是可以配置的),后面的表示其他GET参数。

如果默认的变量设置和你的应用变量有冲突的话,你需要重新设置系统配置,例如改成下面的:

'VAR_MODULE'            =>  'module',     // 默认模块获取变量
'VAR_CONTROLLER'        =>  'controller',    // 默认控制器获取变量
'VAR_ACTION'            =>  'action',    // 默认操作获取变量

上面的访问地址则变成: http://localhost/?module=home&controller=user&action=login&var=value


    2.PATHINFO模式:

PATHINFO模式是系统的默认URL模式,:http://localhost/index.php/home/user/login/var/value/

    3.REWRITE模式:


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

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

<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

     4.兼容模式:


兼容模式是用于不支持PATHINFO的特殊环境,URL地址是: http://localhost/?s=/home/user/login/var/value

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

'VAR_PATHINFO'          =>  'path'

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

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

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


二.MVC 

        MVC:(Model-View-Controller,模型-视图-控制器)


三.CBD

        CBD(核心Core+行为Behavior+驱动Driver)


四.命名空间

        命名空间是一种封装事物的方法。


            在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:

用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。

为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

五.自动加载

        自动加载优先级


       在实际的应用类库加载过程中,往往会涉及到自动加载的优先级问题,以Test\MyClass类为例,自动加载的优先顺序如下

判断是否有注册了Test\MyClass类库映射,如果有则自动加载类库映射定义的文件;

判断是否存在Library/Test目录,有则以该目录为初始目录加载;

判断是否有注册Test根命名空间,有则以注册的目录为初始目录加载;

如果以上都不成立,则以Test为模块目录进行初始目录加载;

        然后以上面获取到的初始目录加载命名空间对应路径的文件;

六.应用模式

    ThinkPHP支持应用模式定义,每个应用模式有自己的定义文件,用于配置当前模式需要加载的核心文件和配置文件,以及别名定义、行为扩展定义等等。除了模式定义外,应用自身也可以独立定义自己的模式文件。

     *每个入口文件仅能定义一个应用模式,所以,如果需要对相同的应用模块设置不同的应用模式访问,就可以通过增加入口文件的方式来解决。


七.项目编译

    1.应用编译缓存

            编译缓存的基础原理是第一次运行的时候把核心需要加载的文件去掉空白和注释后合并到一个文件中,第二次运行的时候就直接载入编译缓存而无需载入众多的核心文件。当第二次执行的时候就会根据当前的应用模式直接载入编译过的缓存文件,从而省去很多IO开销,加快执行速度。

    2.运行Lite文件


            运行Lite文件的作用是替换框架的入口文件或者替换应用入口文件,提高运行效率。因为默认生成的文件名为lite.php,并且是运行时动态生成,因此称之为运行Lite文件。

*Lite文件的特点包括:

运行时动态生成;

常量定义为针对当前环境;

支持定义需要编译的文件列表;

支持生成Lite文件的名称;