1、ThinkPHP的特性有哪些?
(1)采用容器统一管理对象;
(2)支持facade;
(3)更易用的路由;
(4)注解路由支持;
(5)路由跨域请求支持;
(6)验证类增强;
(7)配置和路由目录独立;
(8)取消系统常量;
(9)类库别名机制等等。
2、PHP框架简述什么是单一入口和多入口以及优缺点?
单一入口:用一个文件处理所有的HTTP请求
可以进行集中的安全性检查,减轻维护其他功能代码的难度,如果不是单一入口,那么开发者就必须记得在每一个文件的开始加上安全性检查代码
程序的url看起来不美观,特别是对搜索引擎来说很不友好
多入口:每一次HTTP请求都存在一一对应的php文件
维护难度大但url美观
3、ThinkPHP中的MVC分层是什么?
模型(Model)、视图(View)、控制器(Controller)
4、如何理解ThinkPHP架构(核心+行为+驱动(CBD)) ?
核心:ThinkPHP的核心代码,MVC构架等
行为:ThinkPHP框架自带的一些方法、预留的一些拓展位置等
驱动:ThinkPHP已构建好的数据库驱动、缓存驱动、标签库驱动、模板引擎驱动等等,以及一些外置拓展;在开发过程中,可以直接使用它的这些驱动,简单高效。
- ThinkPHP如何防止SQL注入?
过滤用户输入、使用参数化查询、使用 ORM 工具、更新 ThinkPHP 版本
6、ThinkPHP 如何开启调试模式?调试模式有什么好处?
主入口文件中加入define(“APP_DEBUG”,TRUE);
以除错方便优先,而且在异常的时候可以显示尽可能多的信息
7、ThinkPHP中支持哪些配置模式?优先级是怎样的?
惯例配置->应用配置->场景配置->扩展配置->模块配置->动态配置
8、ThinkPHP中URL模式支持哪几种?
ThinkPHP支持4中URL模式,通过URL_MODEL参数进行配置修改,默认为PATHINFO模式,配置值0,1,2,3依次是:普通模式、PATHINFO模式、REWRITE模式和兼容模式
9、ThinkPHP中M方法和D方法的区别 ?
M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类。
10、简述ThinkPHP 什么是惯例配置?
核心框架内置的配置文件,无需更改
- 简述ThinkPHP函数详解之M方法和R方法 ?
M方法用于实例化一个基础模型类
R方法用于调用某个控制器的操作方法,是A方法的进一步增强和补充
https://www.php.cn/faq/384160.html
12、简述ThinkPHP中session()方法?
用法:session(name,value=’’)
name(必须):如果传入数组 则表示进行session初始化,如果传入null表示清空当前session,如果是字符串则表示session赋值、获取或者操作。
Value(可选):要设置的session值,如果传入null表示删除session,默认为空字符串
- 简述ThinkPHP公共配置文件与各自项目中配置文件组合的方法 ?
使用配置文件的特性return array();
可以在各自项目中的配置文件中这样定义:
复制代码 代码如下:
$config = array(‘‘=>‘‘,);
然后使用函数
复制代码 代码如下:
return array_merge(include‘./conf/config.php‘,$config);
这样就可以在最根目录下面使用公共的配置文件
14、ThinkPHP:create()方法有什么用呢?
可以对POST提交的数据进行处理
可以对表单进行令牌验证,防止表单重复提交
可以对数据自动验证,前提是你必须手动在Model文件夹中建立一个UserModel.class.php文件
可以对字段自动赋值,前提还是必须手动在Model文件夹中建立一个UserModel.class.php文件
15、Thinkphp5框架下如何实现生成一个二维码?
16、Thinkphp5.1控制器初始化函数initialize与构造函数__construct区别
调用时机不同:__construct是在控制器实例化的时候首先被调用,而initialize是在控制器的_initialize方法调用之后才被调用。
调用顺序不同:如果控制器中同时定义了__construct和initialize方法,则__construct会先于initialize被调用。
17、简述ThinkPHP5 的特性 ?
惰性加载
支持composer
遵守PSR-2、PSR-4规范
支持单元测试
安全机制,详细的日志能帮你轻轻松松的做到问题定位;
减少核心依赖,扩展更灵活,方便,支持
出色的性能和REST支持,远程调试,更好的支持
路由,配置和自动加载的缓存机制。
自动化模块部署
命令行访问支持
18、简述ThinkPHP 模型如何更新数据 ?
用模型静态方法:update
用模型直接调用Db类方法
模型的save()方法:
19、ThinkPHP自动完成中使用函数与回调方法 ?
使用函数function填充时,表示填充的内容是一个函数返回值,这个函数可以是PHP内置函数或用户自定义函数
使用方法 callback 填充时,表示填充的内容是一个当前 Model 的方法返回
备注:在ThinkPHP中,自动完成通常使用autoComplete方法实现,它可以接受一个闭包函数作为回调方法
namespace app\index\model;
use think\Model;
class User extends Model
{
// 用户密码自动完成
public function autoComplete()
{
return [
'password' => function($value){
// 对密码进行加密处理
return md5($value);
},
// 自动完成创建时间和更新时间
'create_time' => function(){
return time();
},
'update_time' => function(){
return time();
},
];
}
}
20、简述ThinkPHP中使用ajax接收json数据的方法 ?
(1)前端发送Ajax请求,将数据以JSON格式发送至服务器。
(2)在ThinkPHP后端创建对应的控制器和方法来接收这些数据。
(3)在ThinkPHP控制器方法中,使用input()函数获取POST过来的JSON数据。
(4)对接收到的JSON数据进行处理,并返回相应的响应。
21、简述 ThinkPHP、Yii、CodeIgniter、Laravel的优缺点?
TP:
易于上手,有丰富的中文文档
学习成本低,社区活跃度高
框架的兼容性较强
适合用于中小项目的开发
对ajax的支持不是很好
目录结构混乱,需要花时间整理
上手容易,但深入学习较难
Laravel:
简单易用
文档详细
强大ORM
资源文件管理
集成复杂
速度较慢
学习曲线陡峭
Yii
高效性
安全性
简单易用
数据库灵活
国内文献较少
文档不完备
支持度比较低
CodeIgniter
简单易用
扩展性
文档全面
过度灵活导致代码很容易变得混乱
开发对像:CodeIgniter适合程序开发者,但不一定适合新手
性能瓶颈
22、简要介绍ThinkPHP6的特点?
采用PHP7强类型(严格模式)
支持更多的PSR规范
多应用支持
ORM组件独立
改进的中间件机制
更强大和易用的查询
全新的事件系统
支持容器invoke回调
模板引擎组件独立
内部功能中间件化
SESSION机制改进
缓存及日志支持多通道
引入Filesystem组件
对Swoole以及协程支持改进
对IDE更加友好
统一和精简大量用法
23、简述ThinkPHP6的缓存机制 ?
提供了多种缓存类型,包括文件缓存、Memcached、Redis、数据库缓存等
24、简述ThinkPHP框架和Laravel框架区别 ?
渲染模版方式的不同:Laravel使用return view()来渲染模版,TP使用$this->display()的方式渲染模版
Laravel是一个重路由的框架,TP必须要有控制器方法才能正常访问
laravel具有强大的社区化扩展,强大的Blade模版引擎
中间件,Laravel特点,可以实现访问前后的处理,例如请求和返回,权限认证
条件判断语句书写方式存在差异
加密方式:TP使用md5();Laravel框架中内置了"哈希"Hash加密单向加密方法
25、简述ThinkPHP路由模式?
普通模式:关闭路由,完全使用默认的PATH_INFO方式URL
混合模式:开启路由,并使用路由定义+默认PATH_INFO方式的混合
强制模式:开启路由,并设置必须定义路由才能访问
26、如何使用Composer安装使用ThinkPHP6.0框架 ?
composer create-project topthink/think
安装完成之后,打开安装目录,我们可以看到有一个名字为think的文件,我们在命令提示符中用php运行php think run,以看见它给我们提供了一个网址:127.0.0.1:8000 ,在浏览器中运行,就可以看见如下界面。此时我们的thinkPHP就下载安装好了