Blogger Information
Blog 17
fans 1
comment 0
visits 14761
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP变量作用域以及常量
邱世家的博客
Original
1235 people have browsed it

变量作用域

  1. <?php
  2. // 全局作用域:写到函数外面的
  3. $name = 'php';
  4. // 函数作用域
  5. function get_name(){
  6. $private = 123;
  7. return $private;
  8. }
  9. // 输出123
  10. echo get_name();
  • 在函数中访问函数外部变量的两种方法(无法直接访问):
    1. <?php
    2. // 全局作用域:写到函数外面的
    3. $name = 'php';
    4. // 函数作用域
    5. function get_name(){
    6. //1. 在函数中做一个声明:用的很少不推荐
    7. global $name;
    8. return $name;
    9. //2. 通过超全局变量$GLOBALS[]来访问
    10. return $GLOBALS['name'];
    11. //$private = 123;
    12. //return $private;
    13. }
    14. echo '通过超全局变量$GLOBALS[]来访问:', get_name(),'<hr>';
    15. // 获取当前目录绝对地址
    16. echo $_SERVER['SCRIPT_FILENAME'];

常量

  • 常量:前面没有$,全部大写,多个单词之间_链接,且必须初始化,不能删除,不受作用域限制,可以在函数中访问。
  • 定义常量有两种方式:1:const关键字。2:函数定义
  • 类常量只允许用const
  1. const APP_NAME = '中文网';
  2. define('APP_PATH','/phpstydu');
  3. echo APP_NAME,'<br>';
  4. echo APP_PATH;
  • 返回常量值得两种方式以及区别:echo和constant()函数:
    1. const APP_NAME = '中文网';
    2. define('APP_PATH','/phpstydu');
    3. echo APP_PATH,'<br>';
    4. echo constant('APP_NAME');
  • 当常量名是变量值得时候 要打印常量 必须用constant()函数
  • 当定义常量名为空字符串的时候也可以用constant()函数 打印常量值
    1. const APP_NAME = '中文网';
    2. define('APP_PATH','/phpstydu');
    3. echo APP_PATH,'<br>';
    4. echo constant('APP_NAME'),'<hr>';
    5. // 当常量名是变量值得时候 要打印常量 必须用constant()函数
    6. $get = 'APP_NAME';
    7. echo '通过echo获取是获取不到得:', $get,'<br>';
    8. echo '通过constant函数获取是正确的:',constant($get),'<br>';
    9. // 当定义常量名为空字符串的时候也可以用constant()函数 打印常量值
    10. define('','admin@php.cn');
    11. echo '通过echo方式获取不到:' , '','<br>';
    12. echo '通过constant()函数获取到:' ,constant('');

  1. // 查看当前可用常量 get_defined_constants(true), 参数true是分类
  2. print_r(get_defined_constants(true));

  1. // 查看当前用户自定义常量
  2. print_r(get_defined_constants(true)['user']);

  1. // 预定义常量
  2. echo '版本号' . PHP_VERSION . '<br>';
  3. echo '操作系统' . PHP_OS_FAMILY . '<br>';
  4. echo '最大整数' . PHP_INT_MAX . '<br>';
  5. echo '最大浮点数' . PHP_FLOAT_MAX . '<br>';
  6. //Windows 目录分隔符反斜线\, mac是正斜线/
  7. echo '目录分隔符' . DIRECTORY_SEPARATOR . '<hr>';
  8. //魔术常量
  9. echo '当前行号' . __LINE__ . '<br>';
  10. echo '当前文件' . __FILE__ . '<br>';
  11. echo '当前目录' . __DIR__ . '<hr>';

命名空间:namespace

  • 命名空间: 解决了全局成员的命名冲突问题。(针对不受作用域限制的成员也就是全局成员)
  • 全局空间的成员,不允许重复定义。全局成员包括:常量,类【接口】。函数第一个命名空间 之前不允许有代码
  1. namespace ns1{
  2. const APP_NAME = 'PHP开发';
  3. }
  4. namespace ns2{
  5. const APP_NAME = '开发';
  6. echo '命名空间ns2中访问命名空间ns1中得:' . \ns1\APP_NAME , '<br>';
  7. }
  8. // 全局空间 (没有名字/匿名空间)
  9. namespace {
  10. echo '全局空间访问ns1中得:' . \ns1\APP_NAME , '<br>';
  11. echo '全局空间访问ns2中得:' . \ns2\APP_NAME , '<br>';
  12. }

常用变量过滤器

  • 验证单个变量
  1. //1. 过滤单个变量 filter_var(要过滤的变量,过滤器常量)
  2. // FILTER_VALIDATE_INT 验证整数
  3. $age = 30;
  4. $age = 50;
  5. $options = ['options'=>['min_range'=>18,'max_range'=>60]];
  6. var_dump(filter_var($age,FILTER_VALIDATE_INT,$options));
  7. echo '<hr>';
  • 验证邮箱
  1. $email = 'admin@php.cn';
  2. $email = 'admin@php';
  3. var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
  4. echo '<br>';
  5. $email = 'admin@php.cn';
  6. //也可以用FILTER_VALIDATE_EMAIL这个过滤器常量得id来验证
  7. var_dump(filter_var($email, 274));
  8. echo '<hr>';
  • 验证多个变量
  1. //2. 验证多个变量 filter_var_array([多个变量],过滤器常量)
  2. $a = 10;
  3. $b =20;
  4. // 变量较多时放到一个数组中
  5. $arr = [$a,$b];
  6. var_dump(filter_var_array($arr, FILTER_VALIDATE_INT));

  • 外部变量:通常通过http请求发送过来的,表单,get,post
  1. // 外部变量: 通常通过http请求发送过来的,表单,get,post
  2. // 使用 GET参数来演示外部变量的获取与验证/过滤
  3. // GET 参数是在url后面添加一个?当做查询字符串
  4. //filter_input(输入类型get/post,变量名,过滤器,参数)
  5. echo 'id=' . $_GET['id'];
  6. echo '<hr>';
  7. $options = ['options'=>['min_range'=>1]];
  8. var_dump(filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT,$options));

  • 同时验证多个外部变量
  1. $args = [
  2. 'username' => FILTER_SANITIZE_STRING,
  3. 'email' => FILTER_VALIDATE_EMAIL,
  4. 'age' => ['filter'=>FILTER_VALIDATE_INT,$options = ['options'=>['min_range'=>18,'max_range'=>60]]],
  5. 'blog' => FILTER_VALIDATE_URL
  6. ];

总结:变量过滤器需要多多理解

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