批改状态:合格
老师批语:不要用stdclass当类名
魔术常量可以获取当前文件的路径和ip和文件名等等系统信息
```php
<?php
namespace str1;
//1.变量的作用域
//a.全局作用域
//在函数外定义的变量都是全局变量$name = 'angle';$email = 'angle@163.com';function student(string $email):int{
//b.函数作用域
//在函数内定义的变量作用域只有在函数内部$age = 32 ;//如果想在函数内部使用全局变量,必须声明后使用global $name;//在函数内部可直接使用超全局变量echo $_SERVER['SCRIPT_FILENAME'],'<br>';echo '姓名:',$name,'<br>';echo '邮箱:',$email,'<br>';return $age;}$age=student($email);echo '年龄:',$age,'<br>';
//c.超全局变量
//在函数内部和外部都可直接使用,用$GLOBAL声明//$GLOBAL['name'];////使用最多的是系统自定义的超全局变量echo $_SERVER['SERVER_NAME'],'<br>';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 常量名=常量值来定义
//常量名一般都是大写字母
function test1(){define('COURSE','PHP');//正确//const COURSE='PHP';错误 const不能用在函数中echo '后端课程:',COURSE,'<br>';//可以直接使用常量名获取常量值}test1();if(true){define('COURSE1','HTML');//const COURSE1='HTML'; 错误//const不能用在流程控制语句中echo '前端课程:',constant('COURSE1'),'<br>';//也可用constant('常量名')函数获取常量值}class stdclass{const SEX = 'male';//在类中用const定义类常量}echo '性别:',stdclass::SEX,'<br>';const NAME='angle';//常量只能用标量初始化,标量:数值,字符串,布尔值,nullecho NAME,'<br>';define('NAME1','Hugn');//不能用在类中常量的定义echo NAME1,'<br>';print_r(get_defined_constants(true)['user']);//显示所有用户自定义的常量// php7.0+支持数组初始化常量const STUDENT = ['name'=>'angle','sex'=>'male','age'=>'32','iswork'=>'true'];echo '<pre>'.print_r(STUDENT,true).'</pre>';//b.魔术常量 __魔术常量名__//魔术常可以在任何位置使用if(true){echo __DIR__,'<br>';//输出当前文件的路径}function test2(){echo __FILE__,'<br>';//输出当前文件的路径和文件名}test2();class testclass{const DIRSTR = __FILE__;}echo '文件路径:',testclass::DIRSTR;
?>
```

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号