博客列表 >php中的变量、过滤器、常量

php中的变量、过滤器、常量

雪~人胖胖
雪~人胖胖原创
2020年04月18日 15:28:09692浏览

变量

1. 作用域

  • 变量作用域,也叫”变量范围”, 即定义变量时的上下文环境
  • 变量作用域,通俗的说,就是变量的生效范围
  • 一个变量必定属于一个作用域, 这个作用域也包括了当前作用域中引入其它文件
  • 也有不受作用域限制的变量,例如超全局变量, 在程序中任何地方都是有定义的
  • 函数作用域: php 中只有函数可以创建作用域, 函数之外的代码全部在全局空间中
序号 作用域 描述
1 函数作用域 使用function关键字创建的作用域
2 全局作用域 函数之外的变量生效范围
  • php 中没有块作用域的概念, 这与其它编程语言不同, 请留意
  • 根据作用域不同, 变量可以分为三类:
序号 变量类型 描述
1 私有变量 函数中定义的变量
2 全局变量 函数之外定义的变量
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. <?
  2. //变量作用域
  3. //全局作用域
  4. $sitename = 'PHP中文网';
  5. function getInfo() : string
  6. {
  7. //在函数中无法访问全局变量 需要global引用全局变量或者使用超全局变量$GLOBALS
  8. // global $sitename;
  9. // $private = $sitename;
  10. // 超全局变量不需要定义不需要初始化 在脚本中直接使用
  11. $private = $GLOBALS ['sitename'];
  12. return $private;
  13. }
  14. echo getInfo();

2静态变量

static + 变量

  • 定义在函数中的静态变量使用static修饰,并且与函数作用域绑定
  • 静态变量定义时必须初始化,且只能初始化一次,默认为0
  • 当程序执行离开函数作用域后,静态变量的值不丢失
  • 静态变量的值,可以在函数的多次调用中保持不变,即可带入下次调用中
  • 函数中静态变量遵循私有变量约束, 全局不可访问
    1. <?php
    2. function test1(): string
    3. {
    4. //静态变量只在第一次调用的时候被初始化,以后不会被更新
    5. //实现函数在多次调用的时候的数据共享
    6. static $sum = 0;
    7. $sum = $sum + 1;
    8. return $sum;
    9. }
    10. echo test1(),'<br>';
    11. echo test1(),'<br>';
    12. echo test1(),'<br>';
    运行结果是1 ,2 ,3

    3变量过滤器

    3.1过滤单个变量使用filter_var

    1. <?
    2. //遍历所有过滤器
    3. foreach (filter_list() as $filter){
    4. echo $filter .'==>'.filter_id($filter).'<br>';
    5. }
    6. //1.过滤单个变量
    7. //int过滤器
    8. $age = -1 ;
    9. var_dump(filter_var($age,FILTER_VALIDATE_INT,['options'=>['min_range'=>18,'max_range'=>60]]));
    10. echo '<br>';
    11. //url过滤器正确的url要从http://开始
    12. $blog = 'baidu.com';
    13. var_dump(filter_var($blog,FILTER_VALIDATE_URL));
    14. echo '<br>';
    15. //邮箱过滤器
    16. $email='adimin@163.com';
    17. var_dump(filter_var($email,FILTER_VALIDATE_EMAIL));

    3.2过滤多个变量使用filter_var_array

    1. //1.过滤多个变量
    2. $arr = array(
    3. 'abc',
    4. 200
    5. );
    6. var_dump(filter_var_array($arr,FILTER_VALIDATE_EMAIL));

    3.3检测是否存在外部变量使用函数filter_has_var()

  1. //检测外部变量是否存在使用函数filter_has_var()
  2. //URL地址?后面的键值对
  3. //INPUT_GET表示要检测的是$_GET
  4. var_dump(filter_has_var(INPUT_GET,'p'));

3.4访问外部变量的过滤器filter_input

主要是为了验证数据

  1. filter_input(INPUT_GET,'p',FILTER_VALIDATE_INT,['options'=>['min_range'=>1]]));

3.5同时验证多个外部变量的过滤器filter_input_array()

变量是个数组

  1. $args = [
  2. 'username' => FILTER_SANITIZE_STRING,
  3. 'email' => FILTER_VALIDATE_EMAIL,
  4. 'age' => ['filter' => FILTER_VALIDATE_INT, 'flags'=>FILTER_REQUIRE_SCALAR, 'options' => ['min_range' => 18]],
  5. 'blog' => FILTER_VALIDATE_URL,
  6. ];
  7. var_dump(filter_input_array(INPUT_GET, $args));

4常量

常量

1. 特征

序号 特征
1 常量前面没有美元符号$
2 常量创建时必须初始化
3 常量禁止更新和删除
4 常量不受作用域限制
5 推荐使用大写字母加下划线命名

2. 函数/关键字

序号 定义方式 描述
1 get_defined_constants() 查看系统所有常量
2 defined() 检测常量是否存在
3 define() 创建常量
4 const 关键字 创建常量
5 constant() 获取常量值
  • get_defined_constants(true): 常量分组打印,自定义常量在user分组
  • defined(): 返回布尔值
    -constant():当不知道常量时查找
    ```php
    <?
    //定义常量
    //1.define()函数,不能用在类里面
    define(‘LECTURE’,’朱老师’);
    //const关键字不能再函数中创建 流程控制中可不能使用
    const COURSE =’php’;
    //常量不受作用域的限制
    function test1()
    {
    echo LECTURE . COURSE;
    }

//const用在类中,创建类常量
class Demo
{
const HELLO = ‘php’;
}
echo Demo::HELLO;

//常量通常只允许用标量进行初始化
//php7.0++支持数组初始化常量

const DB_LINK =[
‘host’ => ‘localhost’,
‘username’ =>’root’,
‘password’ =>’root’,
‘charset’ =>’utf8’,
];
echo ‘<pre>‘.print_r(DB_LINK,true).’</pre>‘;
```

3. 预定义常量

预定义常量非常多,有许多与具体扩展相关,如 PDO, 这里仅列出系统级常用的:

序号 预定义常量 描述
1 PHP_VERSION PHP 版本
2 PHP_MAXPATHLEN PHP 路径最大长度:1024
3 PHP_OS_FAMILY 操作系统:Windows/Darwin/Linux
4 PHP_SAPI web 服务器与 php 之间接口: apache2handler
5 PHP_EOL 行尾结束符
6 PHP_INT_MAX 最大整数: 9223372036854775807
7 PHP_INT_MIN 最小整数: -9223372036854775808
8 PHP_INT_SIZE 整数宽度: 8
9 PHP_FLOAT_MAX 最大浮点数:1.7976931348623E+308
10 PHP_FLOAT_MIN 整小浮点数: 2.2250738585072E-308
11 DEFAULT_INCLUDE_PATH 默认 PHP 命令路径
12 PHP_EXTENSION_DIR 默认 PHP 扩展路径
13 E_ERROR 运行时错误: 致命中断
14 E_PARSE 语法解析错误: 致命中断
15 E_NOTICE 运行时提示: 不中断
16 E_WARNING 运行时警告: 不中断
17 E_ALL 所有级别错误(除E_STRICT)
18 E_STRICT 更加严格的错误处理机制,高于E_ALL
19 TRUE 布尔真
20 FALSE 布尔假
21 NULL
22 DIRECTORY_SEPARATOR 目录分隔符

更多预定义常量:https://www.php.net/manual/zh/reserved.constants.php

4. 魔术常量

  • 魔术常量也属于”预定义常量”, 比较特殊所有单独列出
  • 所谓”魔术”, 是指常量的值, 会随它们在代码中的位置改变而改变
  • 魔术常量不区分大小写, 但是推荐全部大写
序号 魔术常量 描述
1 __LINE__ 文件中的当前行号
2 __FILE__ 文件的完整路径和文件名
3 __DIR__ 文件所在目录
4 __FUNCTION__ 当前的函数名称
5 __CLASS__ 当前类名称
6 __TRAIT__ 当前Trait名称
7 __METHOD__ 当前类方法名称
8 __NAMESPACE__ 当前命名空间名称

总结

1.php中有常量,变量,静态变量,全局变量。变量,常量的作用域也不同
2.过滤器能将用户输入的数据筛选,从而输入我们想要的数据。
3.常量的创建和使用以及const与define()应用的场景
4.系统预定义的一些常量,魔术常量的特点,这些都需要熟悉自己验证

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