zoukankan      html  css  js  c++  java
  • Thinkphp面试问题

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

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

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

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

      载入框架入口文件(必须)

    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->方法名("变量名",["过滤方法"],["默认值"])

     

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

     

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

      

     

  • 相关阅读:
    windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras
    Windows10下安装pytorch并导入pycharm
    应用程序无法正常启动0xc000007b解决
    Clion安装配置
    Android Studio安装&&安装bug
    VMWARE虚拟机安装64位系统此主机支持IntelVTx 但IntelVTx处于禁用状态
    A. Text Volume
    1001 数组中和等于K的数对
    11100
    Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/muziyun1992/p/6666508.html
Copyright © 2011-2022 走看看