thnkphp框架面试问题

Thinkphp面试问题

1.如何理解TP中的单一入口文件?php

  答:ThinkPHP采用单一入口模式进行项目部署和访问,不管完成什么功能,一个项目都有一个统一(但不必定是惟一)的入口。应该说,全部项目都是从入口文件开始的,而且全部的项目的入口文件是相似的,入口文件中主要包括:html

  定义框架路径、项目路径和项目名称(可选)面试

  定义调试模式和运行模式的相关常量(可选)数据库

  载入框架入口文件(必须)设计模式

2.ThinkPHP中的MVC分层是什么?(理解)数组

  MVC 是一种将应用程序的逻辑层和表现层进行分离的方法。ThinkPHP 也是基于MVC设计模式的。MVC只是一个抽象的概念,并无特别明确的规定,ThinkPHP中的MVC分层大体体如今:缓存

  模型(M):模型的定义由Model类来完成。安全

 

  控制器(C):应用控制器(核心控制器App类)和Action控制器都承担了控制器的角色,Action控制器完成业务过程控制,而应用控制器负责调度控制。架构

 

  视图(V):由View类和模板文件组成,模板作到了100%分离,能够独立预览和制做。框架

 

  但实际上,ThinkPHP并不依赖M或者V ,也就是说没有模型或者视图也同样能够工做。甚至也不依赖C,这是由于ThinkPHP在Action之上还有一个总控制器,即App控制器,负责应用的总调度。在没有C的状况下,必然存在视图V,不然就再也不是一个完整的应用。

 

  总而言之,ThinkPHP的MVC模式只是提供了一种敏捷开发的手段,而不是拘泥于MVC自己。

3.如何理解 ThinkPHP 3.0 架构(核心 + 行为 + 驱动)中的行为?

  答:核心 + 行为 + 驱动

 

  TP官方简称为:CBD

 

  核心(Core):就是框架的核心代码,不可缺乏的东西,TP自己是基于MVC思想开发的框架。

 

  行为(Behavior) :行为在新版ThinkPHP的架构里面起着举足轻重的做用,在系统核心之上,设置了不少标签扩展位,而每一个标签位置能够依次执行各自的独立行为。行为扩展就所以而诞生了,并且不少系统功能也是经过内置的行为扩展完成的,全部行为扩展都是可替换和增长的,由此造成了底层框架可组装的基础。

 

  驱动( Driver ):数据库驱动、缓存驱动、标签库驱动和模板引擎驱动,以及外置的类扩展。

 

  框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你本身的系统。简单说就是使用别人搭好的舞台,你来作表演。并且,框架通常是成熟的,不断升级的软件。

4. ThinkPHP如何防止SQL注入?(理解)   
  
(1)查询条件尽可能使用数组方式,这是更为安全的方式;

  (2)若是不得已必须使用字符串查询条件,使用预处理机制;

 

  (3)开启数据字段类型验证,能够对数值数据类型作强制转换;(3.1版本开始已经强制进行字段类型验证了)

 

  (4)使用自动验证和自动完成机制进行针对应用的自定义过滤;

 

  (5)使用字段类型检查、自动验证和自动完成机制等避免恶意数据的输入。

 

 

 

5. 如何开启调试模式?调试模式有什么好处?

 

  开启调试模式很简单,只须要在入口文件中增长一行常量定义代码:

 

  <?php

 

      //开启调试模式

 

      define('APP_DEBUG', true);

 

      //加载框架入口文件

 

      require './ThinkPHP/ThinkPHP.php';

 

  在完成开发阶段部署到生产环境后,只须要删除调试模式定义代码便可切换到部署模式。开启调试模式后,系统会首先加载系统默认的调试配置文件,而后加载项目的调试配置文件,调试模式的优点在于:

 

   开启日志记录,任何错误信息和调试信息都会详细记录,便于调试;

 

  关闭模板缓存,模板修改能够即时生效;

 

  记录SQL日志,方便分析SQL;

 

  关闭字段缓存,数据表字段修改不受缓存影响;

 

  严格检查文件大小写(即便是Windows平台),帮助你提早发现Linux部署问题;

 

  能够方便用于开发过程的不一样阶段,包括开发、测试和演示等任何须要的状况,不一样的应用模式能够配置独立的项目配置文件。

 

6. TP中支持哪些配置模式?优先级?

 

  ThinkPHP在项目配置上面创造了本身独有的分层配置模式,其配置层次体如今:

 

    惯例配置->项目配置->调试配置->分组配置->扩展配置->动态配置

 

   以上是配置文件的加载顺序,由于后面的配置会覆盖以前的同名配置(在没有生效的前提下),因此优先顺序从右到左。

 

7. TP中的URL模式有哪几种?默认是哪一种

 

  ThinkPHP支持四种URL模式,能够经过设置URL_MODEL参数来定义,包括普通模式、PATHINFO、REWRITE和兼容模式。

 

    默认模式为:PATHINFO模式,设置URL_MODEL 为1

 

8. TP中系统变量有哪些?如何获取系统变量?

 

   获取系统变量的方法:

 

   只须要在Action中调用下面方法:

 

  $this->方法名("变量名",["过滤方法"],["默认值"])

 

1三、ThinkPHP框架中D函数与M函数的区别是什么?

 

   答:M方法实例化模型无需用户为每一个数据表定义模型类,D方法能够自动检测模型类,若是存在自定义的模型类,则实例化自定义模型类,若是不存在,则会自动调用M方法去实例化Model基类。同时对于已实例化过的模型,不会重复去实例化(单例模式)。

相关文章
相关标签/搜索