Blogger Information
Blog 64
fans 6
comment 2
visits 83033
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php 变量的作用域和过滤器,常量定义
王娇
Original
584 people have browsed it

学习总结

  • 使用变量过滤器可以有效过滤外部数据
  • 使用超全局变量可以轻易获取外部变量的值
  • 魔术常量可以获取当前文件的路径和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;

?>
```

命令显示效果图

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:不要用stdclass当类名
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