批改状态:合格
老师批语:代码写的可以!不过要是有图就好了!
函数作用域(局部作用域): 定义到函数内部的变量,其作用域是局部的
(全局作用域): 定义到函数外部的变量,其作用域是全局的
// 全局变量 作用域为全局// 通过 关键字 global 或者 $GLOBALS$siteName = '盘古开天辟地';// 函数作用域 (局部作用域)// 函数后面的 :string 代表返回类型 作用和 TS类似 强制规定返回的参数的类型 避免因为参数类型不匹配出现的问题 (弱类型和强类型的区别)// php7版本后 支持函数返回类型可声明的支持function getInfo():string{// php 在函数内部是不能直接访问全局变量的 php函数会创建一个独立的内部空间(函数作用域)。 如果php函数内部需要访问全局变量,只能通过 global 或者 $GLOBALS 才能访问全局变量// 我们创建的全局变量会自动成为 超全局变量$GLOBALS数组中的元素// 超全局变量不受作用域限制 可以在函数内直接方位// php可以访问外部函数 php函数只受命名空间的限制// php函数内部 可以直接访问内部变量// 和javascript不同 javascript在函数内部 可以直接访问到全局属性// return $siteName; 报错 未定义该变量// 通过 global// global 现在用的不多// 用法// global $siteName;// return $siteName;// 通过 $GLOBALS 直接访问return $GLOBALS['siteName'];}echo getInfo(); // 执行 php函数
常见常量的方法
// 1. 关键字 constconst APP_NAME = '超级网络';// 2. define() 函数define('APP_ID',123);// 区别 在类中定义常量 无法使用 define函数class User{// 类中定义常量只能使用 const 无法使用define()const IS_PEOPLE = true;// define('NATION','china');}// 常量无法修改// APP_NAME = '123'; 错误// 常量必须初始化// const SEX; 错误// 常量一旦被定义 就无法被删除// unset(APP_NAME); 错误// 查看系统常量 使用函数 get_define_constants();// print_r(get_define_constants());// 常量分类 传入参数 true// get_define_constants(true);// 其中 系统常量数组中 user分类为用户自定义常量// 用户自定义常量获取// get_define_constants(true)['user'];// 输出常量// 1. 直接输出 echo 变量名;// 2. 通过 constant('变量名');// 两种输出变量的方式有何区别?// 例如:// 如果用一个变量保存一个常量名 希望通过这个变量的值来获取对应的常量 这时候 直接用 echo 并不能正确的输出这个常量(只能打印这个变量的值) 此时需要使用constant()$appName = 'APP_NAME';echo $appName; // APP_NAMEecho constant($appName); // 超级网络
预定义常量
echo 'php版本号:'.PHP_VERSION.'<br>';echo '最大整数:'.PHP_INT_MAX.'<br>';echo '目录分隔符:'.DIRECTORY_SEPARATOR.'<br>';// ...
echo '当前行号'.__LINE__.'<br>';echo '当前文件'.__FILE__.'<br>';echo '当前目录'.__DIR__.'<br>';// ...
全局对象 容易出现 命名冲突的问题(都在全局作用域中)。
解决全局成员的命名冲突问题
// 两个常量发生命名冲突// const APP_NAME = 'local';// const APP_NAME = 'localOne';// 定义两个不同的命名空间 分别定义 APP_NAME;//namespace ns1{const APP_NAME = 'local';// 报错 此时ns2还没有定义;// echo \ns2\APP_NAME;}namespace ns2{const APP_NAME = 'localOne';echo \ns1\APP_NAME; // local}// 在全局命名空间中同时打印 ns1 和 ns2 中的 APP_NAME;namespace {echo \ns1\APP_NAME; // localecho \ns2\APP_NAME; // localOne}
查看内置过滤器 filter_list();
过滤单个变量 filter_var();
// 验证单个年龄$age = 18;// 过滤单个变量 filter_var();// filter_var(需要过滤的变量,过滤器常量);// 返回的是布尔值var_dump($age,FILTER_VALIDATE_INT);// 如果是整数 返回 当前这个值 如果不是整数 返回 false// 如果需要加上自己的参数限制 需要额外配置信息$options = ['options'=>['min_range'=>18,'max_range'=>60]];var_dump($age,FILTER_VALIDATE_INT,$options);// 验证单个邮箱$email = '28950713@qq.com';var_dump('$email',FILTER_VALIDATE_EMAIL);
$a = 10;$b = 'php';// 判断多个参数是否为整数var_dump([$a,$b],257);// array(2) { [0]=> int(10) [1]=> bool(false) }
filter_input() filter_input(请求方式,变量名,过滤器,变量)
// 通过get演示外部参数的获取与验证(过滤);// filter_input()// filter_input(指明输入的类型(get/post),变量名,过滤器,变量);// echo 'id='.$_GET['id'];// 可以通过if...else.. 但比较繁琐$options = ['options'=>['min_range'=>1]];var_dump(filter_input(INPUT_GET,'id',FILTER_VALIDATE_INT,$options))
$args = ['username'=> FILTER_SANITIZE_STRING,'email'=> FILTER_VALIDATE_EMAIL,'age'=>['filter'=>FILTER_VALIDATE_INT,'options'=>['min_range'=>18,'max_range'=>60]],'blog'=> FILTER_SANITIZE_URL];var_dump(filter_input_array(INPUT_GET,$args));
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号