博客列表 >php常量、过滤器、魔术变量小结

php常量、过滤器、魔术变量小结

Jason
Jason原创
2020年04月18日 20:36:55513浏览

php常量、过滤器、魔术变量小结

常量

常量就是不会经常变动的量,它主要有以下几种

序号 名称 解释 举例
1 预定义常量 系统预先定义好的常量 PHP_VERSION
2 自定义常量 用户使用关键字定义的常量 difined(age)
3 魔术常量 常量的值随代码位置改变而改变 __DIR__

魔术常量案例

  1. echo '当前行号: ' . __LINE__ . '<br>';
  2. echo '当前文件: ' . __FILE__ . '<br>';
  3. echo '当前目录: ' . __DIR__ . '<br>';

用户自定义常量

  1. // define()函数,创建常量
  2. define('LECTURE', '张三');
  3. // const 关键字,创建常量
  4. const COURSE = 'PHP';

在这里要讲以下这两个关键字的不同,const主要用在类中创建常量,在其他地方是无效的,比如函数中,流程控制,在这些地方都不能用

预定义常量

  1. // 查看系统常量
  2. // print_r(get_defined_constants());
  3. // 分组查看
  4. // print_r(get_defined_constants(true));
  5. // 打印php陪置
  6. echo phpinfo();
  7. // 打印php版本
  8. echo PHP_VERSION;
  9. // 打印PHP相关信息
  10. echo PHP_OS_FAMILY;

变量过滤器

过滤器顾名思义就是把一些输入无效的数据给过滤掉,防止用于对服务器进行攻击,常用过滤器有以下几种

序号 名称 作用 语句
1 整型过滤器 把不是整型的数据过滤掉 FILTER_VALIDATE_INT,['options'=>['min_range'=>18,'max_range'=>60]]
2 邮箱过滤器 把不是邮箱的数据过滤掉 var_dump(filter_var($email, FILTER_VALIDATE_EMAIL))
3 过滤单个变量 把不是同类型的数据过滤掉 var_dump(filter_var_array([100,'php'], FILTER_VALIDATE_INT));
4 单个外部变量过滤器 检测是否存在指定外部变量 var_dump(filter_has_var(INPUT_GET, 'page'))
5 多个外部变量过滤器 检测是否存在多个指定外部变量 var_dump(filter_input_array(INPUT_GET,$args))

显示所有过滤器信息

  1. // foreach (filter_list() as $filter) {
  2. // echo $filter . '=>' . filter_id($filter) . '<br>';
  3. // }

案例如下

  1. # 变量过滤器
  2. // foreach (filter_list() as $filter) {
  3. // echo $filter . '=>' . filter_id($filter) . '<br>';
  4. // }
  5. // echo '<hr>';
  6. // 整型过滤器
  7. $age = 30;
  8. $age = '14';
  9. $age = 25;
  10. var_dump(filter_var($age, FILTER_VALIDATE_INT,['options'=>['min_range'=>18,'max_range'=>60]]));
  11. echo '<hr>';
  12. // 邮箱过滤器
  13. $email = 'admin@qq.cn';
  14. // $email = 'admin@';
  15. var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
  16. // 过滤器id简写
  17. var_dump(filter_var($email, 274));
  18. echo '<hr>';
  19. // 过滤单个变量filter_var_array()
  20. var_dump(filter_var_array([100,'php'], FILTER_VALIDATE_INT));
  21. echo '<hr>';
  22. // 检测是否存在指定外部变量,filter_has_var()
  23. var_dump(filter_has_var(INPUT_GET, 'page'));
  24. echo '<hr>';
  25. // 同时验证多个外部变量
  26. $args = [
  27. 'username' => FILTER_SANITIZE_STRING,
  28. 'email' => FILTER_VALIDATE_EMAIL,
  29. 'age' => ['filter' => FILTER_VALIDATE_INT, 'flags'=>FILTER_REQUIRE_SCALAR, 'options' => ['min_range' => 18]],
  30. 'blog' => FILTER_VALIDATE_URL,
  31. ];
  32. var_dump(filter_input_array(INPUT_GET,$args));

变量作用域

变量作用域,就是变量的生效范围,根据不同的作用域,也分成了两中

序号 作用域 描述
1 函数作用域 使用funcion创建的作用域
2 全局作用域 函数之外的变量生效范围

根据作用域不同,变量可分为三类:

序号 变量类型 描述 举例
1 私用变量 函数中定义的变量 function之内的变量
2 全局变量 函数之外定义的变量 function之外定义的变量
3 超全局变量 预定义变量 系统自带的变量
  • 超全局变量,也叫超全局数组,随系统加载,因此在所有脚本中均有定义,全局和函数中都可以访问
序号 变量名 描述
1 $GLOBALS 引用全局作用域中可用的全部变量
2 $_SERVER 服务器和执行环境信息
3 $_GET HTTP GET 请求:通过 URL 参数传递给当前脚本的变量的数组
4 $_POST HTTP POST 请求: 将变量以关联数组形式传入当前脚本
5 $_FILES HTTP 文件上传变量,保存着上传文件的全部信息
6 $_COOKIE 通过 HTTP Cookies 方式传递给当前脚本的变量的数组
7 $_SESSION 当前脚本可用 SESSION 变量的数组
8 $_REQUEST 默认情况下包含了 $_GET$_POST$_COOKIE 的数组
9 $_ENV 通过环境方式传递给当前脚本的变量的数组

代码

  1. namespace na1;
  2. function test1(): float
  3. {
  4. $sum = 0;
  5. $sum = $sum + 1;
  6. return $sum;
  7. }
  8. echo test1(), '<br>';
  9. echo test1(), '<br>';
  10. echo test1(), '<br>';
  11. echo '<hr>';
  12. namespace ns2;
  13. $sum = 0;
  14. function test1(): float
  15. {
  16. global $sum;
  17. $sum = $sum + 1;
  18. return $sum;
  19. }
  20. echo test1(), '<br>';
  21. echo test1(), '<br>';
  22. echo test1(), '<br>';
  23. echo '<hr>';
  24. namespace ns3;
  25. function test1(): float
  26. {
  27. static $sum = 0;
  28. $sum = $sum + 1;
  29. return $sum;
  30. }
  31. echo test1(), '<br>';
  32. echo test1(), '<br>';
  33. echo test1(), '<br>';
  34. echo '<hr>';

效果图

通过代码的演示,我们可以看到,不同的类型,产生的结果也不同

序号 名称 作用
1 函数变量 每次执行完都会丢失
2 全局变量 函数执行完会保存
3 静态变量 函数执行完会保存

总结

php中有四种变量:常量,变量,静态变量,全局变量,不同的变量,它的作用范围也不一样,所产生的效果也不一样。过滤器就相当于一个滤网,它能将用户输入的数据筛选,从而输入我们想要的数据,用起来非常的好,不像以前都是if来判断。几种类型,说简单也不简单,其中,一些细节部分,比如difineconst的不同,全局变量的使用,空类型的使用,这些都要注意。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议