Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
檀越@新空间
Coding Tree
提交
88270e77
C
Coding Tree
项目概览
檀越@新空间
/
Coding Tree
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Coding Tree
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
88270e77
编写于
3月 05, 2022
作者:
彭世瑜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix
上级
f5f0ea45
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
279 addition
and
0 deletion
+279
-0
blog/php-basic/error.md
blog/php-basic/error.md
+187
-0
blog/php-basic/index.md
blog/php-basic/index.md
+2
-0
blog/php-basic/system.md
blog/php-basic/system.md
+90
-0
未找到文件。
blog/php-basic/error.md
0 → 100644
浏览文件 @
88270e77
# 错误处理 error
系统执行代码的时候,发现错误就会通过错误处理的形式告知程序员
## 错误分类
1.
语法错误(Parse error):代码不符合 PHP 的语法规范,编译不通过
2.
运行时错误(runtime error):编译通过,但是运行代码出错
3.
逻辑错误:写代码不规范导致的逻辑性错误
```
php
// 此处 == 写成了 =, 永远为true
if
(
$a
=
0
){}
```
## 错误代号
PHP 中定义的系统常量
1、系统错误
```
E_PARSE: 编译错误, 代码不会执行
E_ERROR: fatal error,致命错误,代码不能继续执行
E_WARNING: warning ,警告错误,不会影响代码执行,但是可能回得到意想不到的结果
E_NOTICE: notice,通知错误,不影响代码执行
```
2、用户错误
```
E_USER_ERROR
E_USER_WARNING
E_USER_NOTICE
```
3、其他
```
E_ALL
```
所有 E 开头的错误常量都是由一个字节存储,每一种错误占据一个对应的位
如果想进行一些错误的控制,可以使用位运算
例如:
```
php
// 排除通知级别
E_ALL
&
~
E_NOTICE
// 只要警告和通知
E_WARNING
|
E_NOTICE
```
## 错误触发
-
系统触发
-
人为触发
```
php
trigger_error
(
错误提示
);
// 可以传入第二个参数
trigger_error
(
错误提示
,
E_USER_ERROR
);
```
## 错误显示设置
方式一:全局配置 php.ini
```
bash
# 开发环境显示,生产环境不显示
display_errors
=
On / Off
error_reporting
=
E_ALL
```
方式二:运行脚本中设置(推荐)
```
php
// 设置对应的错误显示级别
error_reporting
(
级别
)
// 获取当前的错误显示级别
error_reporting
()
// 设置配置
init_set
(
配置文件中的配置项
,
配置值
);
init_set
(
'error_reporting'
,
E_ALL
);
init_set
(
'display_errors'
,
1
);
```
## 错误日志设置
实际生产环境中,一般不显示错误
1.
不友好
2.
不安全
一般会将错误保存到日志文件中
ini.php 配置文件
```
bash
# 开启日志
log_errors
=
On
# 指定路径
error_log
=
'php_errors.log'
```
## 自定义错误处理
最简单的错误处理
```
php
trigger_error
(
string
$error_msg
,
int
$error_type
=
E_USER_NOTICE
)
:
bool
```
自定义错误处理函数
```
php
set_error_handler
(
callable
$error_handler
,
int
$error_types
=
E_ALL
|
E_STRICT
)
:
mixed
// 处理函数
handler
(
int
$errno
,
string
$errstr
,
string
$errfile
=
?
,
int
$errline
=
?
,
array
$errcontext
=
?
)
:
bool
```
示例
```
php
<?php
// 自定义错误处理函数
function
error_handler
(
int
$errno
,
string
$errstr
,
string
$errfile
,
int
$errline
,
array
$errcontext
)
{
// 判断当前错误是否需要处理
if
(
!
(
error_reporting
()
&
$errno
))
{
return
;
}
echo
$errfile
,
' '
,
$errline
,
' '
;
// 处理错误类型
switch
(
$errno
)
{
case
E_ERROR
:
case
E_USER_ERROR
:
echo
'ERROR'
;
break
;
case
E_WARNING
:
case
E_USER_WARNING
:
echo
'WARNING'
;
break
;
case
E_NOTICE
:
case
E_USER_NOTICE
:
echo
'NOTICE'
;
break
;
}
}
// 修改错误处理机制之前
echo
$a
;
// PHP Notice: Undefined variable
// 设置错误处理机制,注册自定义函数
set_error_handler
(
'error_handler'
);
// 修改错误处理机制之后
echo
$a
;
// NOTICE
```
https://www.bilibili.com/video/BV18x411H7qD?p=76&spm_id_from=pageDriver
\ No newline at end of file
blog/php-basic/index.md
浏览文件 @
88270e77
...
@@ -19,3 +19,5 @@
...
@@ -19,3 +19,5 @@
[
PHP 文件包含
](
blog/php-basic/include.md
)
[
PHP 文件包含
](
blog/php-basic/include.md
)
[
PHP 函数 function
](
blog/php-basic/function.md
)
[
PHP 函数 function
](
blog/php-basic/function.md
)
[
PHP 错误处理 error
](
blog/php-basic/error.md
)
blog/php-basic/system.md
浏览文件 @
88270e77
...
@@ -74,3 +74,93 @@ strtotime(string $datetime, int $now = time()): int
...
@@ -74,3 +74,93 @@ strtotime(string $datetime, int $now = time()): int
echo
strtotime
(
'2022-03-03 22:13:20'
);
echo
strtotime
(
'2022-03-03 22:13:20'
);
// 1646316800
// 1646316800
```
```
## 数学函数
```
max() 较大值
min() 较小值
rand() 随机整数
mt_rand() 效率比rand()高,建议使用
round() 四舍五入
ceil() 向上取整
floor() 向下取整
pow() 指数
abs() 绝对值
sqrt() 平方根
```
示例
```
php
<?php
echo
max
(
1
,
10
);
// 10
echo
min
(
1
,
10
);
// 1
echo
rand
(
1
,
10
);
// 9
echo
mt_rand
(
1
,
10
);
// 1
echo
round
(
3.14
);
// 3
echo
ceil
(
3.14
);
// 4
echo
floor
(
3.14
);
// 3
echo
pow
(
3
,
2
);
// 9
echo
abs
(
-
10
);
// 10
echo
sqrt
(
4
);
// 2
```
## 函数有关
```
function_exists() 判断函数是否存在
func_get_arg() 获取指定数值对应的参数
func_get_args() 获取所有参数(数组)
func_num_args() 获取实参数量
```
```
php
<?php
function
foo
(
$a
,
$b
)
{
// 获取参数数量
echo
func_num_args
();
// 2
// 获取指定参数
echo
func_get_arg
(
0
);
// 2
// 获取所有参数
var_dump
(
func_get_args
());
// array(2) {
// [0]=> int(1)
// [1]=> int(2)
// }
}
// 判断函数是否存在
var_dump
(
function_exists
(
'foo'
));
// bool(true)
foo
(
1
,
2
);
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录