php报错级别二进制,php.ini设置之报错等级及其二进制原理

在研究php.ini设置报错等级之前,我们先来讨论一下二进制的运算。IT行业有句谚语是:世界上只有两种人,分别是懂二进制而不懂二进制的。

这里浅析二进制的几种运算

先来认识一下关于进制互相转换的函数

php进制转换函数如下:

bindec() — 二进制转换为十进制

decbin() — 十进制转换为二进制

dechex() — 十进制转换为十六进制

decoct() — 十进制转换为八进制

hexdec() — 十六进制转换为十进制

octdec() — 八进制转换为十进制

base_convert()– 在任意进制之间

来看运算符^ & |

^ 表示表示异或 前后两个值同样的时候为0反之为1

& 表示且 前后两个值必须都为1的时候 为1反之为0

| 表示只要有一个值为1的时候 那么结果便是1

运算举例

php进制转换函数如下:

bindec() — 二进制转换为十进制

decbin() — 十进制转换为二进制

dechex() — 十进制转换为十六进制

decoct() — 十进制转换为八进制

hexdec() — 十六进制转换为十进制

octdec() — 八进制转换为十进制

base_convert()– 在任意进制之间转换数字

$a = 5;

echo $a."
";

echo "转为二进制".decbin($a);

echo "
";

$b = 6;

echo $b."
";

echo "转为二进制".decbin($b);

echo "
";

//理解三种运算且,或,异或

echo $c=$a^$b;

echo "
";

echo "转为二进制".decbin($c);

echo "
";

//位运算

$start=3;

$result=$start<<1;//右移动,左移动

echo $result;

PHP报错类型有多个,我们可以用二进制串来判断报错类型是否开启多少个

定义和用法:

error_reporting() 设置PHP的报错级别并返回当前级别。

函数语法:

error_reporting(report_level)

如果参数 level未指定,当前报错级别将被返回。下面几项是level可能的值:

值     常量                  描述

1      E_ERROR               致命的运行错误。错误无法恢复,暂停执行脚本。

2      E_WARNING             运行时警告(非致命性错误)。非致命的运行错误,脚本执行不会停止。

4      E_PARSE               编译时解析错误。解析错误只由分析器产生。

8      E_NOTICE              运行时提醒(这些经常是你代码中的bug引起的,也可能是有意的行为造成的。)

16     E_CORE_ERROR          PHP启动时初始化过程中的致命错误。

32     E_CORE_WARNING        PHP启动时初始化过程中的警告(非致命性错)。

64     E_COMPILE_ERROR       编译时致命性错。这就像由Zend脚本引擎生成了一个E_ERROR。

128    E_COMPILE_WARNING     编译时警告(非致命性错)。这就像由Zend脚本引擎生成了一个E_WARNING警告。

256    E_USER_ERROR          用户自定义的错误消息。这就像由使用PHP函数trigger_error(程序员设置E_ERROR)

512    E_USER_WARNING        用户自定义的警告消息。这就像由使用PHP函数trigger_error(程序员设定的一个E_WARNING警告)

1024   E_USER_NOTICE         用户自定义的提醒消息。这就像一个由使用PHP函数trigger_error(程序员一个E_NOTICE集)

2048   E_STRICT              编码标准化警告。允许PHP建议如何修改代码以确保最佳的互操作性向前兼容性。

4096   E_RECOVERABLE_ERROR   开捕致命错误。这就像一个E_ERROR,但可以通过用户定义的处理捕获(又见set_error_handler())

细心的同学可能会发现,报错类型对应的十进制数字是二的幂,那么是怎么得来的呢。

比如一个二进制是10那么转为10进制数便是1*2^1+0*2^0=2

上述共有十三个类型 也就是说 我们可以用13位的二进制数去表示相应是否开启的报错类型

1 1 1 1 1 1 1 1 1 1 1 1 1

我们0代表关闭,1代表开启,就可以很直观。

假设我们要开启2  E_WARNING  4  E_PARSE

那么只需2+4

然后PHP语句中加入error_reporting(2+4);//就可以顺利开启两个报错类型

当然error_reporting(0);则是不报告任何错误,但是开发中,建议尽可能的报错。然后当项目投入使用的时候,则应该屏蔽错误,因为防止脚本执行错误的时候,报错功能会把当前脚本的位置暴露出来,造成不安全的因素。

关于二进制的应用我们还可以用于平时的开发中,把所有的权限列出来。管理员,会员,游客。则可以用简单的一个数字就可以判断操作级别,节省了空间。而且可以通过上述二级制的运算巧妙地剔除或者增加一些用户的权限!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值