博客列表 >变量作用域、常量、过滤器细说

变量作用域、常量、过滤器细说

evan
evan原创
2020年07月06日 11:05:55620浏览

变量作用域

  1. <?php
  2. // 全局作用域
  3. $name ='peter';
  4. // 全局变量自动成为超全局数组$GLOBALS中的元素
  5. echo print_r($GLOBALS,true).'<br>';
  6. echo $GLOBALS['name'];
  7. echo '<hr>';
  8. // 函数作用域
  9. function boss(){
  10. // 私有变量
  11. $myfriend ='lindy';
  12. return $myfriend;
  13. // 在函数中不能直接访问全局变量,要用global声明或者用超全局变量$GLOBALS来访问
  14. // global声明
  15. global $name;
  16. return $name;
  17. // 超全局变量$GLOBALS访问
  18. return $GLOBALS['name'];
  19. }
  20. echo boss();

常量

  1. <?php
  2. // 常量 由const,define定义,要初始化,不能删除,不受作用域限制
  3. const MY_NAME = 'evan';
  4. define('MY_AGE',22);
  5. // 自定义常量是系统常量数组中的一个元素
  6. print_r(get_defined_constants(true)['user']);
  7. // 类中的常量只允许用const定义,用define()会报错
  8. class People
  9. {
  10. const NAME = 'evan';
  11. }
  12. echo '<br>';
  13. // 如果常量名放在一个变量中,用constent()输出常量的值
  14. $name = 'MY_NAME';
  15. echo constant($name);
  16. echo '<br>';
  17. // null也可以用作常量名,但要用constant()获取值
  18. define('','male');
  19. echo constant('');

预定义常量与魔术常量

  1. <?php
  2. // 预定义常量:
  3. echo '版本号: ' . PHP_VERSION . '<br>';
  4. echo '操作系统: ' . PHP_OS_FAMILY . '<br>';
  5. echo '最大整数: ' . PHP_INT_MAX . '<br>';
  6. echo '最大浮点数: ' . PHP_FLOAT_MAX . '<br>';
  7. echo '目录分隔符: ' . DIRECTORY_SEPARATOR . '<hr>';
  8. // 魔术常量:值随系统变化而变化,无法自定义
  9. echo '当前文件完整路径: ' . __FILE__ . '<br>';
  10. echo '当前文件所在目录: ' . __DIR__ . '<br>';
  11. echo '当前行号: ' . __LINE__ . '<br>';
  12. echo '当函数名: ' . __FUNCTION__ . '<br>';
  13. echo '当前类名: ' . __CLASS__ . '<br>';
  14. echo '当前trait名: ' . __TRAIT__ . '<br>';
  15. echo '当前类方法名: ' . __METHOD__ . '<br>';
  16. echo '当前命名空间: ' . __NAMESPACE__ . '<br>'

过滤器

PHP过滤器作用:验证和过滤来自于非安全来源的外部数据。

  1. <?php
  2. // 查看当前php版本支持的过滤器
  3. foreach(filter_list() as $filter){
  4. echo $filter. '=>' .filter_id($filter).'<br>';
  5. }
  6. // 1.单个变量过滤:filter_var(变量名,过滤器常量)
  7. $age = 22;
  8. var_dump(filter_var($age,FILTER_VALIDATE_INT));
  9. // 2.多个变量过滤:filter_var_array()
  10. $name = 'evan';
  11. $age = 22;
  12. $sex ='男';
  13. // 将变量放到一个数组中
  14. $people = ['name'=>'evan', 'age'=>22, 'sex'=>'男'];
  15. var_dump(filter_var_array($people,FILTER_VALIDATE_INT));
  16. echo '<br>';
  17. var_dump(filter_var_array($people,513));
  18. // 3.外部变量过滤:filter_input(输入类型,变量名,过滤器,可选参数)
  19. echo '标题:' . $_GET['title'];
  20. // 范围用'options'=>['min_range'=>22, 'max_range'=>55]表示
  21. $data = ['options' =>['min_range'=>2000, 'max_range'=>10000]];
  22. var_dump(filter_input(INPUT_GET,'cost',FILTER_VALIDATE_INT,$data));
  23. // 4.验证多个外部变量:filter_input_array()
  24. $data =[
  25. 'name'=>FILTER_SANITIZE_STRING,
  26. 'cost'=>FILTER_VALIDATE_INT,
  27. 'exp'=>['filter'=>FILTER_VALIDATE_INT, 'optins'=>['min_range'=>2,'max_range'=>10]],
  28. 'web'=>FILTER_VALIDATE_URL
  29. ];
  30. var_dump(filter_input_array(INPUT_GET,$data));

常用的过滤器函数:

序号 函数 描述
1 filter_list()
2 filter_id()
3 filter_var() 过滤单个变量
4 filter_var_array() 过滤多个变量
5 filter_has_var() 检测是否存在某个外部变量
6 filter_input() 过滤单个外部变量
7 filter_input_array() 过滤多个外部变量

验证过滤器常量:

序号 函数 描述
1 FILTER_VALIDATE_INT 验证整数
2 FILTER_VALIDATE_FLOAT 浮点点验证
3 FILTER_VALIDATE_BOOLEAN 验证布尔项
4 FILTER_VALIDATE_EMAIL 验证邮箱
5 FILTER_VALIDATE_URL 验证 URL 地址
6 FILTER_VALIDATE_IP 验证 IP 地址
7 FILTER_VALIDATE_REGEXP 正则验证
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议