博客列表 >php 变量的作用域 命名空间 变量过滤器7.3

php 变量的作用域 命名空间 变量过滤器7.3

刹那永恒个人博客
刹那永恒个人博客原创
2020年07月13日 14:29:46657浏览

一.变量的作用域

1.作用域的概念

  • 作用域是变量的生效范围
  • 作用域是查找变量的工具

2.作用域的分类

  • 变量的作用域分为全局作用域和变量作用域
    • 全局作用域:写到了函数外部的变量
    • 函数作用域 写到函数内部的变量

3.函数内部 访问函数外部全局变量的方法

  • 函数内部不可以直接访问函数外部的变量
    1. <?php
    2. error_reporting(E_ALL);
    3. $siteName="你好朱老师";
    4. function getInfo(){
    5. //会报错 不会被调用
    6. return $siteName;
    7. }
    8. echo getInfo();
    9. ?>
  • 方法1:函数内部访问函数外部的全局变量可以用 global $外部变量名 来实现
    1. <?php
    2. error_reporting(E_ALL);
    3. $siteName="你好朱老师";
    4. function getInfo(){
    5. global $siteName;
    6. return $siteName;
    7. }
    8. echo getInfo();
    9. ?>
  • 方法2: 使用$GLOBALS 超全局变量

    • $GLOBALS 是超全局变量 不受作用域限制 可以在函数中直接访问
      在全局中创建的变量,会自动成为超全局变量$GLOBALS中的一个元素

    • echo $GLOBALS[‘siteName’] 这样可以拿到全局变量

    1. <?php
    2. error_reporting(E_ALL);
    3. $siteName="你好朱老师";
    4. function getInfo(){
    5. //使用GLOBALS的方法调用外部变量
    6. return $GLOBALS['siteName'];
    7. }
    8. echo getInfo();
    9. ?>

    二.常量的定义与命名空间

    1.常量的定义

  • 方法1 const APP_PATH=”应用路径”;
  • 方法2 define(‘ABS’,100);常量ABS的值为100;在类常量值中使用会报错
  • 常量不允许重新定义,禁止删除,常量不受作用域限制,
  • 常量推荐全部大写 多个单词使用下划线链接

    2.命名空间

    用namespace定义空间
    空间分为私有空间和全局空间
  1. <?php
  2. // 定义空间 常量用
  3. namespace space1 {
  4. const AA="space1";
  5. };
  6. namespace space2{
  7. const AA="space2";
  8. };
  9. // 定义全局匿名空间
  10. namespace {
  11. echo space1\AA;
  12. echo space2\AA;
  13. };
  14. // echo '还行吧';
  15. ?>

三 常用的变量过滤器

  1. filter_var(); 通过一个指定的过滤器来过滤单一的变量
  2. filter_var_array() 函数获取多个变量,并进行过滤
  3. filter_input() 函数从脚本外部获取输入(比如表单输入),并进行过滤。
  4. filter_input_array() 函数从脚本外部获取多项输入(比如表单输入),并进行过滤。同filter_input()
  5. filter_has_var() 函数检查是否存在指定输入类型的变量。
  • 实例1 filter_var(); 通过一个指定的过滤器来过滤单一的变量
    1. // 1.过滤单个变量 filter_var()
    2. $age=61;
    3. // filter_var(要过滤的变量,过滤器常量,过滤范围)
    4. echo filter_var($age,FILTER_VALIDATE_INT);

输出了 int(61)

  • 实例2 filter_var_array() 函数过滤多个变量
  1. // 2.过滤多个变量 是否为整数
  2. $gaes=[2,3,6,4,'xx',6];
  3. var_dump(filter_var_array($gaes,FILTER_VALIDATE_INT));

输出了
array(6) { [0]=> int(2) [1]=> int(3) [2]=> int(6) [3]=> int(4) [4]=> bool(false) [5]=> int(6) } string(12) “admin@qq.com

  • 实例3 filter_input() 过滤单个外部变量
  1. <?php
  2. if(filter_input(INPUT_GET,'email',FILTER_VALIDATE_EMAIL)){
  3. echo '您输入的是个邮箱!';
  4. }else{
  5. echo '您输入的格式错误';
  6. }
  7. ?>

  • 实例4 过滤 多个外部变量
    1. //验证多个外部变量 GET
    2. //定义过滤器
    3. $args = [
    4. 'username'=> FILTER_SANITIZE_STRING,//去除标签以及特殊字符
    5. 'email'=>FILTER_VALIDATE_EMAIL,//验证邮箱
    6. 'age'=> ['filter'=>FILTER_VALIDATE_INT, 'options'=>['min_range'=> 18, 'max_range'=> 60]],
    7. 'blog'=> FILTER_VALIDATE_URL
    8. ];//验证整数并且最小不能小于18最大不能大于60
    9. //使用外部变量过滤器
    10. var_dump(filter_input_array(INPUT_GET,$args));
    使用的连接为
    bj.bj/p0703-5.php?username=admin&email=ksd@qq.com$age=23&blog=http://sss.com
    输出结果为
    array(4) { [“username”]=> string(5) “admin” [“email”]=> bool(false) [“age”]=> NULL [“blog”]=> string(14) “http://sss.com“ }

总结 这里卡了很多天,可能是脑袋不够用吧,但是我不信邪,加油

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