关于PHP的strict模式的开启方法

乌龟壳 发布于 2016/09/06 11:05
阅读 722
收藏 0
PHP

前段时间我从osc的评论中,看到有人说“开启了php的strict模式,写起来就和java一样了”

我不是说想要像java一样写php,主要是希望能编译时就能检查出来使用了未定义的变量(因为可能我拼错了变量名,查半天没查出来为啥数据传得对用得不对)。

请问刚才说的是否开启strict模式可以解决。如果可以要怎么开,网上没查到。

唯一查到就是php.ini里error_reporting和E_STRICT配置有关,但我开了,没有效果。


加载中
1
leo108
leo108

那是php7的新特性

declare(strict_types=1); 

乌龟壳
乌龟壳
谢谢解惑,不过这个特性没法解决俺的问题,好像这个开关是给php代码加了int那些类型了而已。
1
eechen
eechen
强类型strict_types是从PHP7开始才引入的东西,默认不开启,以后也不会默认开启,是一个很有争议性且完全不兼容PHP5的特性.这个强类型跟性能没有任何关系,其中PHP之父Rasmus,Zend公司创始人Andi,PHP7性能方面的核心开发者Dmitry和鸟哥Laruence都投了反对票.
https://wiki.php.net/rfc/scalar_type_hints_v5
经过相当激烈的讨论后,PHP7决定引入强类型(strict types)支持.
strict_types=1无非就是约束了参数和返回值的类型,
类型对不上则返回一个Fatal error: Uncaught TypeError
而且是运行时才能感知,php -l file.php语法检查并不会提示类型错误.
<?php
declare(strict_types=1);
function foo(int $num): int {
    return $num/2;
}
foo(1); //返回值类型错误
foo(1.5); //参数类型错误
foo(2); //正常

弱类型乃PHP编程优势所在,PHP默认就有一套is_xxx判断类型的函数,
根本不需要用户函数再多此一举限制返回值类型(strict_types=1):
http://php.net/manual/zh/ref.var.php

PHPer仍然可以用弱类型编写代码,弱类型带来的开发便捷这个优势PHP是绝不会放弃的,强类型只是多了一种选择,不喜欢,无视就好.
乌龟壳
乌龟壳
如果你是评论我的问题的话,请先看清楚我在问什么。如果不是请随意。
返回顶部
顶部