常见ThinkPHP框架面试笔试问题及解答

发布时间 - 2020-08-10 00:00:00    点击率:

1、如何理解ThinkPHP中的单一入口文件?

ThinkPHP使用单一入口模式进行项目部署和访问,使用ThinkPHP框架,无论做什么项目,都会有一个唯一的入口文件,这个文件就是这个项目的起点,进入项目后,再进行其他操作。

一般的,入口文件都会包含三部分内容:

必须的:

    1.载入框架入口文件

可选的:

    2.定义框架路径、项目路径和项目名称

    3.定义调试模式、运行模式的相关常量

 相关专题推荐:2025年thinkphp面试题及答案(大全)

2、ThinkPHP中的MVC分层是什么

MVC设计思想是一种抽象的概念,核心是把应用程序的逻辑层和视图层分开。

ThinkPHP中用到MVC的大致体现在是:

模型(M):Model数据处理类;

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

视图(V):由View类和视图模板文件组成。

在ThinkPHP中,做到了不依赖M或者V ,也就是说没有模型或者视图也一样可以工作。甚至也不依赖C,这是因为ThinkPHP在Action之上还有一个总控制器,即App控制器,负责应用的总调度。在没有C的情况下,必然存在视图V,否则就不再是一个完整的应用。

3、如何理解ThinkPHP架构(核心+行为+驱动(CBD))

核心:ThinkPHP的核心代码,MVC构架等等;

行为:ThinkPHP框架自带的一些方法、预留的一些拓展位置等;

驱动:ThinkPHP已构建好的数据库驱动、缓存驱动、标签库驱动、模板引擎驱动等等,以及一些外置拓展;在开发过程中,可以直接使用它的这些驱动,简单高效。

4、ThinkPHP如何防止SQL注入

ThinkPHP架构设计的时候,进行了一些防SQL注入的操作。

主要需要注意的地方有:

sql操作能用Array操作就用Array

必须用Sql语句进行操作时,对用户输入的内容进行预判;例如,数值类型强制转换、SQL关键字检查、正则表达式匹配等。

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

开启调试模式,只需要在入口文件中,载入框架入口文件语句之前,增加一行常量定义语句;

define("APP_DEBUG",true);

开启调试模式后,系统会自动开启以下内容:

操作日志、SQL日志等日志,任何的错误都会详细记录,便于调试;

关闭模板文件缓存,模板修改即时生效;

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

严格检查文件大小写等等

调试模式是一种在项目上线之前,开发、调试、演示等等场景下的一个便捷工具。

6、ThinkPHP中支持哪些配置模式?优先级是怎样的?

ThinkPHP在项目配置方面创建了自己都有的分层配置模式,优先顺序从右到左依次是:

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

7、ThinkPHP中URL模式支持哪几种?

ThinkPHP支持4中URL模式,通过URL_MODEL参数进行配置修改,默认为PATHINFO模式,配置值0,1,2,3依次是:普通模式、PATHINFO模式、REWRITE模式和兼容模式

8、ThinkPHP中的系统变量有哪些?如何获取系统变量?

ThinkPHP中常用的系统变量包括:server、session、cookie、get、post、request

系统变量的输出必须使用$Think.作为前缀,比如:

$Think.server.php_self = $_SESSION['php_self']

9、ThinkPHP中M方法和D方法的区别(高频问题)

ThinkPHP中常用M和D两种方法来实例化数据模型类,区别是M方法直接实例化数据模型基类,D方法会检查一下是否有继承的模型类,如果没有的话,则功能和M方法一样,如果存在继承类,则实例化继承类。

相关学习推荐:thinkphp


# 是一种  # 是一个  # 也不  # 两种  # 做什么  # 只需  # 要在  # 不受  # 是怎样  # 如果没有 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python文件异常处理策略_健壮性说明【指导】  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Laravel安装步骤详细教程_Laravel环境搭建指南  JavaScript如何实现错误处理_try...catch如何捕获异常?  如何在云主机上快速搭建网站?  Windows Hello人脸识别突然无法使用  如何在阿里云完成域名注册与建站?  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  简单实现jsp分页  佛山网站制作系统,佛山企业变更地址网上办理步骤?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  如何正确下载安装西数主机建站助手?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  Laravel如何使用Livewire构建动态组件?(入门代码)  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  LinuxShell函数封装方法_脚本复用设计思路【教程】  Laravel如何升级到最新版本?(升级指南和步骤)  如何在Windows服务器上快速搭建网站?  如何快速搭建高效服务器建站系统?  装修招标网站设计制作流程,装修招标流程?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  简单实现Android文件上传  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  微信小程序 canvas开发实例及注意事项  javascript中的try catch异常捕获机制用法分析  Laravel如何使用Service Container和依赖注入?(代码示例)  网站制作壁纸教程视频,电脑壁纸网站?  Thinkphp 中 distinct 的用法解析  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Laravel如何使用模型观察者?(Observer代码示例)  如何在建站主机中优化服务器配置?  WEB开发之注册页面验证码倒计时代码的实现  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  新三国志曹操传主线渭水交兵攻略  jQuery 常见小例汇总  Linux后台任务运行方法_nohup与&使用技巧【技巧】  公司网站制作价格怎么算,公司办个官网需要多少钱?  Android使用GridView实现日历的简单功能