博客列表 >php 变量的作用域和过滤器,常量定义

php 变量的作用域和过滤器,常量定义

王娇
王娇原创
2020年04月18日 15:52:31589浏览

学习总结

  • 使用变量过滤器可以有效过滤外部数据
  • 使用超全局变量可以轻易获取外部变量的值
  • 魔术常量可以获取当前文件的路径和ip和文件名等等系统信息

    php示例代码

    ```php
    <?php
    namespace str1;
    //1.变量的作用域
    //a.全局作用域

    1. //在函数外定义的变量都是全局变量
    2. $name = 'angle';
    3. $email = 'angle@163.com';
    4. function student(string $email):int{

    //b.函数作用域

    1. //在函数内定义的变量作用域只有在函数内部
    2. $age = 32 ;
    3. //如果想在函数内部使用全局变量,必须声明后使用
    4. global $name;
    5. //在函数内部可直接使用超全局变量
    6. echo $_SERVER['SCRIPT_FILENAME'],'<br>';
    7. echo '姓名:',$name,'<br>';
    8. echo '邮箱:',$email,'<br>';
    9. return $age;
    10. }
    11. $age=student($email);
    12. echo '年龄:',$age,'<br>';

    //c.超全局变量

    1. //在函数内部和外部都可直接使用,用$GLOBAL声明
    2. //$GLOBAL['name'];//
    3. //使用最多的是系统自定义的超全局变量
    4. echo $_SERVER['SERVER_NAME'],'<br>';
    5. echo '<hr>';

    //2.静态变量,使用static声明的变量,一般用在函数中,只有在第一次调用函数时初始化,

function sum()
{
$sum = 0;
$sum = $sum +1;
return $sum;
}
echo sum(),’ ‘;
echo sum(),’ ‘;
echo sum(),’ ‘;
namespace str2;
function sum()
{
//使用static声明后,只在第一次调用时初始化
static $sum = 0;
$sum = $sum + 1;
return $sum;
}
echo sum(),’ ‘;
echo sum(),’ ‘;
echo sum(),’<br>‘;

echo ‘<hr>‘;
//3.变量过虑器
$age = 200;
//a.单个变量过虑filter_var(变量名,过滤器名称或过滤器ID,过滤条件)
$isage = filter_var($age,FILTER_VALIDATE_INT,[‘options’=>[‘min_range’=>’1’,’max_range’=>’120’]]);

if ($isage)
{
echo ‘年龄验证通过<br>‘;
}
else
{
echo ‘年龄验证失败<br>‘;
}

//b.验证多个变量
$isemail = filter_var_array([23,’angle’,’angle123@123.com’],FILTER_VALIDATE_EMAIL);
var_dump($isemail);
echo ‘<br>‘;

//c.验证是否存在指定的外部变量
// INPUT_GET: 表示要检测的是$_GET,就是get参数,其实就是get请求
// INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV
$ispag = filter_has_var(INPUT_GET,’page’);
if($ispag)
{
echo ‘有用户提交的变量page<br>‘;//http://localhost/php11/0416/index.php?page=2
}
else
{
echo ‘没有用户提交的变量page<br>‘;//http://localhost/php11/0416/index.php
}

//d. 访问外部变量的过滤器,filter_input
$pagval = filter_input(INPUT_GET,’page’,FILTER_VALIDATE_INT,[‘options’=>[‘min_range’=>1]]);
if($pagval)
{
echo ‘页码正确<br>‘;//http://localhost/php11/0416/index.php?page=2
}
else
{
echo ‘非法页码<br>‘;//http://localhost/php11/0416/index.php?page=-1
}

// e. 同时验证多个外部变量: filter_input_array()

$userval = [
‘username’ => FILTER_SANITIZE_STRING,
‘email’ => FILTER_VALIDATE_EMAIL,
‘age’ =>[‘filter’=>FILTER_VALIDATE_INT,’options’=>[‘min_range’=>’18’]],
‘blog’ => FILTER_VALIDATE_URL
];
echo ‘<pre>‘.var_dump(filter_input_array(INPUT_GET,$userval)).’</pre>‘;

//angle@163.com&age=12&blog=http://www.php.cn"">http://localhost/php11/0416/index.php?username=wangjiao&email=angle@163.com&age=12&blog=http://www.php.cn
echo ‘<hr>‘;
//4.常量
//a.定义常量可以使用defint(‘’,’’) 和const 常量名=常量值来定义
//常量名一般都是大写字母

  1. function test1(){
  2. define('COURSE','PHP');//正确
  3. //const COURSE='PHP';错误 const不能用在函数中
  4. echo '后端课程:',COURSE,'<br>';//可以直接使用常量名获取常量值
  5. }
  6. test1();
  7. if(true)
  8. {
  9. define('COURSE1','HTML');
  10. //const COURSE1='HTML'; 错误//const不能用在流程控制语句中
  11. echo '前端课程:',constant('COURSE1'),'<br>';//也可用constant('常量名')函数获取常量值
  12. }
  13. class stdclass
  14. {
  15. const SEX = 'male';//在类中用const定义类常量
  16. }
  17. echo '性别:',stdclass::SEX,'<br>';
  18. const NAME='angle';//常量只能用标量初始化,标量:数值,字符串,布尔值,null
  19. echo NAME,'<br>';
  20. define('NAME1','Hugn');//不能用在类中常量的定义
  21. echo NAME1,'<br>';
  22. print_r(get_defined_constants(true)['user']);//显示所有用户自定义的常量
  23. // php7.0+支持数组初始化常量
  24. const STUDENT = [
  25. 'name'=>'angle',
  26. 'sex'=>'male',
  27. 'age'=>'32',
  28. 'iswork'=>'true'
  29. ];
  30. echo '<pre>'.print_r(STUDENT,true).'</pre>';
  31. //b.魔术常量 __魔术常量名__
  32. //魔术常可以在任何位置使用
  33. if(true)
  34. {
  35. echo __DIR__,'<br>';//输出当前文件的路径
  36. }
  37. function test2(){
  38. echo __FILE__,'<br>';//输出当前文件的路径和文件名
  39. }
  40. test2();
  41. class testclass{
  42. const DIRSTR = __FILE__;
  43. }
  44. echo '文件路径:',testclass::DIRSTR;

?>
```

命令显示效果图

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