php7类型约束,严格模式

在PHP7之前,函数和类方法不需要声明变量类型

,任何数据都可以被传递和返回,导致几乎大部分的调用操作都要判断返回的数据类型是否合格。

为了解决这个问题,PHP7引入了类型声明。

目前有两类变量可以声明类型: 形参,返回值。

支持的类型有整形,浮点型,字符串型,布尔型。

简单的代码演示

    public function demo(int $num){return $num;}public function aa(){return  $this->demo(11);}

上面代码的demo方法定义形参的类型为int类型,浏览器访问调用aa方法返回值为11

这时候如果传入字符串类型的参数进去

    public function aa(){return  $this->demo('你好');}

浏览器访问调用aa方法直接报错

而有些情况下,php判断也是不严谨的

    public function demo(int $num){return $num;}public function aa(){return  $this->demo('11');}

这个时候传入进去的参数其实是字符串,但是浏览器访问调用aa方法没有报错,返回值为11,所以这样就不算严谨了

在php7后面的版本中引入了开启严格模式去解决上面的问题

关键字declare

如要强制性约束类型,可在文件头部添加declare声明:

 开启了严格模式之后

这时候在测试一下上面的案例,发现编辑器语法上面就已经报错了,浏览器运行一下果然报错:

只有严格定义传入的参数是int类型才可以

如果不做类型强制约束,那么PHP会将返回的数据转化为指定类型的数据再返回,目前差不多只有string无法强转为int才会报错。

如果指定了强制约束,那么PHP将不会进行类型转换,而是进行对比,如类型不同,则报错。

返回类型声明

第一次看到这种写法觉得很陌生,也是php7后面引进的写法

demo('测试内容');}
}

demo方法形参的括号后面加冒号加类型即可指定方法返回值的类型,指定了什么类型返回的就是什么类型,上面demo方法的形参定义为string类型,返回值的类型也定义为string类型

稍微改变一下

demo(11);}
}

这时候开启严格模式,规定demo方法返回值的类型为int类型,浏览器运行一下就报错了

因为返回的值类型是float浮点类型,而不是定义的int类型

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部