2019年09月18日 17:31:48 黎建湛
原文链接 :
链接:http://note.youdao.com/noteshare?id=31e75f25d8edcc65e995388367333002&sub=25FD6C1C150F4FEDAE3788417BDC2D19
众所周知,PHP是一门基于解释器进行编译的弱类型脚本编程语言,所谓的弱类型不是说它本身这门语言的弱,而是这门语言对于其他的编译语言来说,不考虑数据类型转换的,会自动处理数据类型之间的转换。
说到这里,我最近的项目中遇到了有关PHP类型的转换问题,值得注意的是,为什么会想起这个问题呢?就要从我公司的项目来说起,由于我开发的项目,包括自研框架,组织架构,常用的函数库都是公司封装好的,适用于微信开发平台的中大型项目。
回归正题,我在开发项目时,遇到一个BUG,反反复复的看后台的业务接口,分页封装类,核心函数库,核心类文件,包括前端,断点调试都没有发现问题,找个半天愣是工作没有进展。突然,查看参数类型时候,发现原来是数据类型转换的问题,我一下子懵了。
看了下项目,思考了一番,项目中并没有让我们开发者遵守的严格模式。这个大意,让我觉得即使是PHPer,程序员对于数据类型转换方面也要注意起来。
源码:
<?php
$page = (int) $page;
var_dump($page);
PHP数据类型有三种强制类型转换方式:
1.在要转换的变量之前加上用括号括起来的目标类型
使用(int),(bool),(float),(string),(array),(object)
2.使用3个具体类型的转换函数,intval()、floatval()、strval()
使用intval(),floatval(),strval()
3.使用通用类型转换函数settype(mixed var,string type)
使用 settype(); 注意:使用settype(变量,类型) 直接改变量本身。
强制类型转换的优点:
1.使用get方式进行参数传递时的,非法用户可能会进行恶意篡改,你就需要将他强制转化成int型,保证程序的安全性
2.在高并发应用场景中,保障系统能够平稳运行。