博客列表 >PHP 变量作用域、常量的定义、常用的变量过滤器

PHP 变量作用域、常量的定义、常用的变量过滤器

司马青衫
司马青衫原创
2020年07月06日 10:02:05801浏览

PHP 变量作用域、常量的定义、常用的变量过滤器

PHP 变量作用域

  • 作用域是查找变量的工具
  • 作用域是变量的生效范围
    • 全局作用域:写在函数的外部的变量,不能在函数中直接使用。
    • 函数作用域:函数内部创建的变量,私有变量,能直接在函数中访问。
    • 函数中访问外部变量有两种方式:
    • 1.函数内使用global声明外部变量 2.使用超全局变量$GLOBALS来访问
  1. <?php
  2. //外部变量 全局作用域
  3. $name = 'simaqingshan';
  4. $age = 20;
  5. //函数作用域
  6. function getName(){
  7. //1.global声明 访问外部全局变量
  8. global $name;
  9. //2.$GLOBALS超全局变量访问外部变量
  10. //私有变量 可以直接访问
  11. $height = 180;
  12. return $name.'&nbsp;'.$GLOBALS['age'].'&nbsp;'.$height;
  13. }
  14. echo getNAME();

  • 还有一些其它超全局变量 如$_SERVER
    • echo $_SERVER['SCRIPT_NAME'];
    • echo $_SERVER['REQUEST_URI'];

PHP 常量

自定义常量

  • 查看当前有哪些可用的常量 print_r(get_defined_constants(true));
  • 用户自定义常量方式:
    • 1.const关键字方式:类中只允许使用const定义常量
    • 2.define关键字方式
  • 使用constant()拿到常量
  1. <?php
  2. const NAME = 'simaqingshan';
  3. define('NAME1', 'simaqingshan');
  4. //查看当前有哪些可用的常量
  5. print_r(get_defined_constants(true));
  • 常量特点:
    • 常量前面没有$符号
    • 常量必须初始化
    • 常量不能删除
    • 常量不受作用域限制
    • 常量推荐全部大写,多个单词之间使用下划线连接

预定义常量、魔术常量

  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 '当前行号:'. __LINE__ . '<br>';
  10. echo '当前文件:'. __FILE__ . '<br>';
  11. echo '当前目录:'. __DIR__ . '<br>';

命名空间

  • 解决全局空间中重复定义的命名冲突
    • 使用namespace
  1. <?php
  2. namespace ns1{
  3. const name = 'sima';
  4. }
  5. namespace ns2{
  6. const name = 'qingshan';
  7. }
  8. //创建全局空间
  9. namespace{
  10. echo \ns1\name.'<br>';
  11. echo \ns2\name.'<br>';
  12. }

PHP 变量过滤器

  • 查看当前 PHP 版本支持的预定义过滤器
  1. <?php
  2. foreach(filter_list() as $filter){
  3. echo $filter. '=>'.filter_id($filter).'<br>';
  4. }
名称 描述
FILTER_VALIDATE_INT 验证值是否为整数
FILTER_VALIDATE_EMAIL 验证值是否为 email
FILTER_VALIDATE_URL 验证值是否为 URL 地址
FILTER_VALIDATE_BOOLEAN 验证值是否为 BOOL
FILTER_VALIDATE_IP 验证值是否为 IP 地址

验证单个变量

  • filter_var(要过滤的变量,过滤器常量,验证可选条件)
  1. <?php
  2. $age = 60;
  3. $option = ['options'=>['min_range'=>18,'max_range'=>60]];
  4. var_dump(filter_var($age, FILTER_VALIDATE_INT, $option));

验证多个变量

  • filter_var_array()
  1. <?php
  2. $arr=[30,50,'hello'];
  3. var_dump(filter_var_array($arr,FILTER_VALIDATE_INT));

验证外部变量

  • filter_input(): 函数从外部获取输入(比如表单输入),并进行验证。
    • INPUT_GET
    • INPUT_POST
    • INPUT_COOKIE
    • INPUT_SERVER
    • INPUT_ENV
  1. <?php
  2. var_dump(filter_input(INPUT_GET,'age', FILTER_VALIDATE_INT));

验证多个外部变量

  • filter_input_array()
  1. <?php
  2. $args=[
  3. 'username'=>FILTER_SANITIZE_STRING,
  4. 'email'=>FILTER_VALIDATE_EMAIL,
  5. 'age'=>['filter'=>FILTER_VALIDATE_INT, 'option'=>['min_range'=>18,'max_range'=>60]],
  6. 'blog'=>FILTER_VALIDATE_URL
  7. ];
  8. var_dump(filter_input_array(INPUT_GET, $args));

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