Blogger Information
Blog 36
fans 1
comment 0
visits 29726
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php常量、过滤器、魔术变量小结
Jason
Original
512 people have browsed it

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的不同,全局变量的使用,空类型的使用,这些都要注意。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:常量就是代码里的钉子户, 与程序共生死
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post