Blogger Information
Blog 8
fans 0
comment 3
visits 8175
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP关于变量、过滤器以及常量的基础知识和自己的理解
程东旭
Original
580 people have browsed it

4月16日作业:

1. 将课堂案例全部过一遍,并将自己认为重要的发布到博客中

代码部分

  1. <?php
  2. //创建一个变量,默认就是全局作用域
  3. $name1 = 'mafei';
  4. //如果要在函数中引用此变量,使用global引用,例如
  5. function aaa() : string
  6. {
  7. global $name1;
  8. return $name1;
  9. }
  10. echo aaa() , '<br>';
  11. //在函数中引用全局变量,也可以使用超全局变量GLOBALS实现,例如
  12. function bbb() : string
  13. {
  14. $name2 = $GLOBALS['name1'];
  15. return $name2;
  16. }
  17. echo bbb();
  18. echo '<hr>';
  19. //函数中创建的变量成为私有变量,在函数中的每次使用都会被格式化
  20. function ccc() : int
  21. {
  22. $age = 20;
  23. $age = $age + 2;
  24. return $age;
  25. }
  26. echo ccc() , '<br>';
  27. echo ccc() , '<br>';
  28. echo ccc() , '<br>';
  29. //函数中引用全局变量,不会每次都被格式化
  30. $age = 30;
  31. function ddd() : int
  32. {
  33. global $age;
  34. $age = $age + 3;
  35. return $age;
  36. }
  37. echo ddd() , '<br>';
  38. echo ddd() , '<br>';
  39. echo ddd() , '<br>';
  40. //如果在函数中创建的私有变量,也不要每次都格式化,需要创建静态变量即可
  41. function eee() : int
  42. {
  43. static $age = 40;
  44. $age = $age + 1;
  45. return $age;
  46. }
  47. echo eee() , '<br>';
  48. echo eee() , '<br>';
  49. echo eee() , '<br>';
  50. echo '<hr>';
  51. //查看所有过滤器以及过滤器的id
  52. //foreach (filter_list() as $filter){
  53. // echo $filter. '=>' . filter_id($filter) . '<br>';
  54. //}
  55. //1.过滤单个变量用filter_var()
  56. $age = 20;
  57. //整数过滤器
  58. var_dump(filter_var($age, FILTER_VALIDATE_INT, ['options'=>['min_range'=>10,'max_range'=>30]]));
  59. echo '<hr>';
  60. //邮箱过滤器
  61. $email = 'aaa';
  62. $email = 'aaa@php.cn';
  63. var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
  64. echo '<hr>';
  65. //过滤单个变量filter_var_array(),应该成为数组过滤器
  66. var_dump(filter_var_array([100, 'aaa@php.cn'], FILTER_VALIDATE_EMAIL));
  67. echo '<hr>';
  68. //检测外部变量里面的get请求里面是否存在键值对
  69. var_dump(filter_has_var(INPUT_GET, 'aaa'));
  70. echo '<hr>';
  71. echo 'get变量p = ' . $_GET['n'];
  72. echo '<hr>';
  73. //验证单个外部数据
  74. var_dump(filter_input(INPUT_GET, 'n', FILTER_VALIDATE_INT, ['options'=>['min_range'=>30, 'max_range'=>3000]]));
  75. echo '<hr>';
  76. //同时验证多个外部数据
  77. //先建立一个数据过滤器
  78. $args = [
  79. 'username' => FILTER_SANITIZE_STRING,
  80. 'email' => FILTER_VALIDATE_EMAIL,
  81. 'age' => ['filter' => FILTER_VALIDATE_INT, 'flags'=>FILTER_REQUIRE_SCALAR, 'options' => ['min_range' => 18, 'max_range'=>60]],
  82. ];
  83. //验证多个外部数据
  84. var_dump(filter_input_array(INPUT_GET, $args));
  85. echo '<hr>';
  86. //用函数define定义常量
  87. define('NAME', 'aaa');
  88. echo NAME , '<br>';
  89. //用const定义常量
  90. const NAME2 = 'bbb';
  91. echo NAME2 . '<br>';
  92. //用constant打印常量
  93. echo constant('NAME') . '<br>';
  94. //将常量的名称保存在变量里面
  95. $a = 'NAME';
  96. echo constant($a) . '<br>';
  97. //建立一个名称为空的常量
  98. define('', 'mafei');
  99. //constant可以打印名称为空的常量
  100. echo constant('');
  101. echo '<hr>';
  102. //魔术常量
  103. echo '当前行号' . __LINE__ . '<br>';
  104. echo '当前文件' . __FILE__ . '<br>';
  105. echo '当前目录' . __DIR__ . '<br>';
  106. echo '<hr>';
  107. //在函数中使用魔术常量
  108. function aaa111()
  109. {
  110. echo __FUNCTION__;
  111. }
  112. aaa111();
  113. //在类中使用魔术常量
  114. class ccc
  115. {
  116. public function index()
  117. {
  118. echo __METHOD__;
  119. }
  120. }
  121. (new ccc)->index();

总结

一、关于作用域

1、在函数外部创建的变量是全局变量,默认无法被函数内引用,如果需要在函数中引用,需要使用global引用,或者使用超全局变量$GLOBALS

2、默认在函数内创建的私有变量引用时每次都格式化,函数引用全局变量不会每次都格式化

3、在函数内部创建的私有变量,如果不想让每次都格式化,需要使用static创建静态变量

二、过滤器

1、所有过滤器

int=>257
boolean=>258
float=>259
validate_regexp=>272
validate_domain=>277
validate_url=>273
validate_email=>274
validate_ip=>275
validate_mac=>276
string=>513
stripped=>513
encoded=>514
special_chars=>515
full_special_chars=>522
unsafe_raw=>516
email=>517
url=>518
number_int=>519
number_float=>520
magic_quotes=>521
add_slashes=>523
callback=>1024

2、单个变量过滤器用FILTER_VAR,数组过滤器用FILTER_VAR_ARRAY

3、邮箱过滤器用FILTER_VALIDATE_EMAIL

4、检测外部变量过滤器用FILTER_HAS_VAR

5、验证单个外部数据用FILTER_INPUT,验证多个外部数据用FILTER_INPUT_ARRAY

三、常量

1、关于define和const定义常量的区别

使用场景。 define const
函数 可用 不可用
流程控制 可用 不可用
不可用 可用

2、常量只允许用标量进行初始化,标量包括单值变量、字符串、数值、布尔值、null,php7.0+支持数组初始化常量

3、当不知道常量名的时候可以用函数constant()打印常量

4、魔术常量的值会随当天获取信息的不同而发生变化

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