PHP严格模式 Strict standards

Declaration of xxxxxx should be compatible with yyyyyy
警告规则 (如):Strict standards: Declaration of xxxxxx should be compatible with yyyyyy



上图所示的意思是:在PHP 大于5.4的版本中,使用了 PHP的严格模式 检查程序,检测结果为 Index模块中的 clearcache()方法 必须兼容 父类Mytpl类中 定义的clearcache()方法,即 子类覆写父类的方法时 必须一致,包括 参数个数一致、参数如果没有值 则需要定义其默认值!

如果 想覆写 父类中的 clearcache()方法,则 需要 按照父类的格式 进行覆写,参数个数一致,参数名可以不同,参数不存在时 需要使用默认值 才能保证 覆写父类方法正确!



首先需要开启严格模式:



declare(strict_types = 1);
严格模式下,形参和返回值可加限制。对返回值的限制需要在参数的()后面加上引号加类型限制即可,例:



function demo(int $v):int{
return 1;
}



php.ini里error_reporting和E_STRICT配置有关



https://www.php.net/declare



https://www.cnblogs.com/lovecatcher/p/11383641.html
https://segmentfault.com/a/1190000012438552



http://www.itkeyword.com/doc/0728044114841364915/php-7-unsupported-declare-strict-types



在php.ini中可以设置服务器对错误的报警级别。在默认情况下,php将报告除了通知之外的所有错误。
错误报告级别是通过一些预定义的常量来设置的,
语法
int error_reporting ( [int level] )
如果参数 level 未指定,当前报错级别将被返回。下面几项是 level 可能的值:
如下表所示:
1 E_ERROR 报告运行时的致命错误
2 E_WARNING 报告运行的非致命错误



4 E_PARSE 报告解析错误
8 E_NOTICE 报告通告,注意,表示所做的事情可能是错误的.
16 E_CORE_ERROR 报告PHP引擎启动失败
32 E_CORE_WARNING 报告PHP引擎启动时非致命错误



64 E_COMPILE_ERROR 报告编译错误
128 E_COMPILE_WARNING 报告编译时出现的非致命错误



256 E_USER_ERROR 报告用户触发的错误
512 E_USER_WARNING 报告用户触发的警告



1024 E_USER_NOTICE 报告用户触发的通告
2047 E_ALL 报告所有的错误和警告
2048 E_STRICT 报告不赞成的用法和不推荐的行为



在php.ini文件中,默认的报告是除了通知之外的所有错误,如下语句设定:



1
error_reporting = E_ALL & ~ (E_NOTICE)



在上面的表达式中,符号”&”表示几个条件这间的并列,而”~”表示否定,即NOT的含义.
如果想忽略警告信息,可以设定如下语句:



1
error_reporting = E_ALL & ~(E_NOTICE) & ~(E_WARNING)
在php.ini文件中,和错误有关的设置有如下几个:
(1)error_reporting,设定错误级别
(2)display_errors,是否显示错误报告,设置为ON则打开,设置为OFF则关闭所有错误提示
(3)log_errors,默认设置为OFF,是否记录错误日志;
(4)track_errors,默认设置为OFF,该选项可以帮助解决代码中的错误,而不是让PHP提供其默认的功能。



网上搜集:



E_NOTICE 表示一般情形不记录,只有程式有错误情形时才用到,例如企图存取一个不存在的变数,或是呼叫 stat() 函式检视不存在的档案。



E_WARNING 通常都会显示出来,但不会中断程式的执行。这对除错很有效。例如:用有问题的常规表示法呼叫 ereg()。
E_ERROR 通常会显示出来,亦会中断程式执行。意即用这个遮罩无法追查到记忆体配置或其它的错误。
E_PARSE 从语法中剖析错误。
E_CORE_ERROR 类似 E_ERROR,但不包括 PHP 核心造成的错误。
E_CORE_WARNING 类似 E_WARNING,但不包括 PHP 核心错误警告。



https://www.cnblogs.com/timelesszhuang/p/4332645.html



https://www.cnblogs.com/hgj123/p/4565679.html



mbstring.strict_detection:是否打开严格的编码检测模式,这个找了半天才知道什么意思,在处理有不同编码或错误编码字 符混杂情况(例如mb_detect_encoding(”testä”))下打开这个参数能够防止mb_detect_encoding返回错误的编 码。可以参见PHP Bug 24309 。默认值为Off。



https://blog.csdn.net/yavobo/article/details/6164557



https://www.php.net/manual/zh/mbstring.configuration.php



https://www.cnblogs.com/xixilovely/articles/5110683.html
https://blog.csdn.net/lyd518/article/details/3048659
https://www.php.cn/php-weizijiaocheng-223550.html


Category php