Blogger Information
Blog 32
fans 2
comment 0
visits 27928
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
变量作用域,常量及过滤器
简行
Original
574 people have browsed it

一.变量作用域

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

1.全局作用域和函数作用域(在php,函数会创建出一个独立的作用域,不能直接访问外部的变量

  1. <?php
  2. // 设置一个全局变量,写在函数外部,全局作用域
  3. $siteName = "php中文网";
  4. function getInfo(){
  5. //函数作用域,只有作用于函数内,私有变量
  6. $siteName2 ="PHP中文网";
  7. return $siteName2;
  8. }
  9. echo getInfo();

2.访问函数外部的变量方法一:声明global

  1. $siteName = "php中文网";
  2. function getInfo(){
  3. // 使用全局变量方法一:声明global
  4. global $siteName;
  5. return $siteName;
  6. }
  7. echo getInfo();

3.访问函数外部的变量方法二:通过超全局变量$GLOBALS

  1. <?php
  2. // 在全局中创建的变量,会自动成为超全局数组$GLOBALS中的一个元素
  3. //超全局变量,在每个脚本中都有预定义
  4. // 超全局变量, 不受作用域限制,可以在函数中直接访问
  5. $siteName = "php中文网";
  6. function getInfo(){
  7. // 使用全局变量方法二:超全局变量$GLOBALS
  8. return $GLOBALS['siteName'];
  9. }
  10. echo getInfo();

二.常量

系统常量:查看系统常量get_defined_constants(true),其中true参数是进行分组:print_r(get_defined_constants(true));
自定义常量:也可用get_defined_constants(true)进行查看;

1.定义常量方式:const APP_NAME = "学生管理系统";define("APP_USER","admin");

2.两种定期的区别在于define()不能类中定义

  1. //两者区别:define()不能类中定义
  2. class Info {
  3. // define("APP_USER","admin");//报错
  4. const APP_NAME = "学生管理系统";//可行
  5. }

3.访问常量:echo APP_NAME;echo constant("APP_USER");;区别在于:

  1. <?php
  2. const APP_NAME="学生管理系统";
  3. $name = "APP_NAME";
  4. //不可行
  5. echo $name;//输出“APP_NAME”
  6. //可行
  7. echo constant($name);//输出“学生管理系统”

4.定义常量注意事项:

  • 常量前没有$;
  • 常量必须初始化:const SEX = 'famale';
  • 常量不让删除;
  • 常量不受作用域限制;
  • 常量推荐全部大写,多个单词之间使用下划线连接;
    预定义常量
    1. echo '版本号: ' . PHP_VERSION . '<br>';
    2. echo '操作系统: ' . PHP_OS_FAMILY . '<br>';
    3. echo '最大整数: ' . PHP_INT_MAX . '<br>';
    4. echo '最大浮点数: ' . PHP_FLOAT_MAX . '<br>';
    5. echo '目录分隔符: ' . DIRECTORY_SEPARATOR . '<hr>';
    魔术常量
序号 魔术常量 描述
1 __LINE__ 文件中的当前行号
2 __FILE__ 文件的完整路径和文件名
3 __DIR__ 文件所在目录
4 __FUNCTION__ 当前的函数名称
5 __CLASS__ 当前类名称
6 __TRAIT__ 当前Trait名称
7 __METHOD__ 当前类方法名称
8 __NAMESPACE__ 当前命名空间名称
常量命名空间
  1. <?php
  2. // 命名空间: 解决了全局成员 的命名冲突问题
  3. // 全局成员: 常量, 类[接口], 函数;
  4. // 全局空间中的成员, 不允许重复定义
  5. namespace ns1 {
  6. const APP_NAME = '学生管理系统';
  7. }
  8. namespace ns2 {
  9. const APP_NAME = '用户管理系统';
  10. }
  11. // 全局空间: 匿名空间
  12. namespace { //访问常量
  13. echo \ns1\APP_NAME;
  14. echo \ns2\APP_NAME;
  15. }

三.过滤器

过滤一个或者多个变量,如果成功,则返回被过滤的数据。如果失败,则返回 FALSE。

1单个过滤(验证):filter_var(要过滤变量,过滤器常量,可选参数)

  1. <?php
  2. $id = 155;
  3. //设置参数
  4. $opt = ['options'=>['min_range'=> 18, 'max_range'=> 60]];
  5. var_dump(filter_var($id,FILTER_VALIDATE_INT,$opt));

2.多个过滤(验证):filter_var_array()

  1. <?php
  2. $id = 50;
  3. $email ="363799120@qq.com";
  4. $arr = [$id,$email];
  5. var_dump(filter_var_array($arr,FILTER_VALIDATE_INT));

3.外部变量过滤,通过 http请求发送过来的(表单,get,post),函数:filter_input(输入类型get/post, 变量名, 过滤器, 参数)

  1. <?php
  2. //通过GET参数来演示获取的外部变量的验证/过滤
  3. //http://myphp.edu/index.php?id=15&username=admin&email=363799120@qq.com&age=33&money=0&url=www.myphp.edu/index.html
  4. $option =[ ///同时验证多个外部变量
  5. "id" =>FILTER_VALIDATE_INT,//验证整数
  6. 'username'=> FILTER_SANITIZE_STRING,//过滤字符串
  7. 'email'=>FILTER_VALIDATE_EMAIL,//过滤邮箱
  8. 'age'=> ['filter'=>FILTER_VALIDATE_INT, 'options'=>['min_range'=> 1, 'max_range'=> 80]],
  9. "money" =>FILTER_VALIDATE_FLOAT,//验证浮点
  10. 'url'=> FILTER_VALIDATE_URL //验证 URL 地址
  11. ];
  12. var_dump(filter_input_array(INPUT_GET,$option));
Correcting teacher:GuanhuiGuanhui

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