批改状态:合格
老师批语:写的还好!不过不要滥用bt_code
变量作用域
作用域是变量的生效范围
作用域是查找变量的工具
写在函数外的变量:是全局作用域的变量
例:$siteName = 'hello';
在函数内部使用外部变量的两种方法
1.使用global在函数内部声明一下要使用的外部变量
// 外部定义变量$siteNAme = 'hello';function getinfo(){// 使用globel在函数内部声明一下这个变量实现调用外部变量global $siteName;return $siteName;}// 调用函数echo getinfo(); // 输出 hello
2.声明一个超全局数组,在全局中创建的变量会自动成为超全局数组$GLOBALS中的一个元素[叫全局变量]
例:// 外部定义一个变量$siteName = 'hello';function getinfo(){// 在内部使用超全局数组访问超全局变量$GLOBALS['siteName']}// 调用函数echo getinfo(); // 输出hello
常量
定义常量的两种方法
1.关键字const 常量名;
例:const SITE_NAME = 'demo';
2.函数define('常量名','常量值');
例:define('APP_NAME','管理系统');
get_defined_constants(true)查看系统中预定义的常量
get_defined_constants(true);这里的参数true写上会把系统的预定义常量分类
get_defined_constants(true)['user']查询用户自定义的常量
类中的常量只能用const关键字来定义
例:class User {const NAME = '张三';}
1.常量前没有$符号
2.常量必须初始化
例:const NAME = '张三';或define('NAME','张三');
3.常量不予许删除
例:const NAME = '张三';unset(NAME); // 不被允许
4.常量不受作用域限制
例:const NAME = '张三';function getinfo(){return Name;}echo getinfo(); // 输出 "张三"
5.在同一空间内常量不予许重定义[相当于不予许重新赋值]
例:// 在同一空间下这样是错误的const APP_PATH = '张三';const APP_PATH = '李四';
| 预定义常量 | 作用 |
|---|---|
| PHP_VERSION | 查看版本号 |
| PHP_OS_FAMILY | 查看操作系统 |
| PHP_INT_MAX | 查看最大整数 |
| PHP_FLOAT_MAX | 查看最大浮点数 |
| DIRECTORY_SEPARATOR | 查看目录分隔符 |
| 魔术常量 | 描述 |
|---|---|
__LINE__ |
文件中的当前行号 |
__FILE__ |
文件的完整路径和文件名 |
__DIR__ |
文件所在目录 |
__FUNCTION__ |
当前的函数名称 |
__CLASS__ |
当前类名称 |
__TRAIT__ |
当前Trait名称 |
__METHOD__ |
当前类方法名称 |
__NAMESPACE__ |
当前命名空间名称 |
命名空间
全局成员不允许被重复定义,类与函数也是全局成员,也不允许重复定义
全局成员包括:常量,类[接口属于类的一种],函数
namespace 空间名 { 内容 } // 当前文件独属于当前这个命名空间时{}可去掉直接 namespace 命名空间名称 即可
创建命名空间:例:// 命名空间ns1namespace ns1 {const APP_PATH = '/phpstudy_pro';}// 命名空间ns2namespace ns2 {const APP_PATH = '/public';// 在命名空间ns2中访问命名空阿ns1中的常量APP_PATHecho \ns1\APP_PATH;}// 访问命名空间中的常量//在全局空间中访问命名空间中的常量namespace {echo \ns1\APP_PATH,"<br>";echo \ns2\APP_PATH,"<br>";}
变量过滤器
查看当前php版本支持的预定义过滤器有哪些
foreach (filter_list() as $filter) {echo $filter . ' => ' .filter_id($filter) . '<br>';}// 我的当前php版本7.1.13 输出支持的预定义过滤器// 左边过滤器名称 ,右边过滤器idint===>257boolean===>258float===>259validate_regexp===>272validate_domain===>277validate_url===>273validate_email===>274validate_ip===>275validate_mac===>276string===>513stripped===>513encoded===>514special_chars===>515full_special_chars===>522unsafe_raw===>516email===>517url===>518number_int===>519number_float===>520magic_quotes===>521callback===>1024
filter_var(要过滤的变量, 过滤器常量)
filter_var(要过滤的变量,过滤器常量,对过滤变量的限制)
FILTER_VALIDATE_INT过滤/检测当前变量是否是整数型数值
FILTER_VALIDATE_EMAIL过滤/检测当前变量是否是符合邮箱类型
例:$age = 21;var_dump(filter_var($age,FILTER_VALIDATE_INT)); // 输出int(21);$ages = '23'; // 当前变量的值是字符串型数值var_dump(filter_var($age,FILTER_VALIDATE_INT)); // 输出int(23);`解释:过滤器验证时会自动把过滤变量转换为字符串,所以过滤变量的值为数值型字符串可以如$age='abc'这就直接输出false因为abc不是数值型字符串不能转换为有效数值`// 给过滤变量添加限制例:$ages = '23';// 这里声明一个二位数组来限制过滤变量$age的值 min-range是最小值 max_range是最大值// 如果过滤的变量超过限制的值也会输出false;$options = ['options'=>['min-range'=>'18','max-range'=>'80']];// 输出打印过滤变量var_dump(filter_var($age,FILTER_VALIDATE_INT,$options));// 输出int(23);// 过滤邮箱例:$email = 'ceshi@qq.com'; // 定义一个邮箱格式字符串var_dump($email,FILTER_VALIDATE_EMAIL); // 输出"ceshi@qq.com"// 另一种方式可以过滤常量的id代替常量名var_dump($email,274); // 输出效果和写过滤常量的效果一样 输出"ceshi@qq.com"
filter_var_array(过滤变量[把所有要过滤的变量放进一个数组在赋值给一个变量],过滤器名称)
例:$a = 10;$b = '80';// 把所有要过滤验证的变量放进一个数组$arr = [$a,$b];// 过滤检测当前数组值是否都是整数型不是的输出false是的直接输出var_dump(filter_var_array($arr,FILTER_VALIDATE_INT)); // 输出结array(2) { [0]=> int(10) [1]=> int(80) }
filter_input(输入传递方式/get,post,变量名,过滤器,参数)
例:// 使用GET方式传参来演示外部变量的获取和验证/过滤$id = $_GET['id']; // 这个id是通过get方式从地址栏中传过来的$options = ['options'=>['min_range'=> 1]]; // 限制id最小是1var_dump(filter_input(INPUT_GET,'id',FILTER_VALIDATE_INT,$options));
filter_var_array(输入传递方式/get,post,过滤数组)
例:$args = ['username'=> FILTER_SANITIZE_STRING,'email'=>FILTER_VALIDATE_EMAIL,'age'=> ['filter'=>FILTER_VALIDATE_INT, 'options'=>['min_range'=> 18, 'max_range'=> 60]],'blog'=> FILTER_VALIDATE_URL];// 哪一个不符合直接输出falsevar_dump(filter_input_array(INPUT_GET,$args));// 输出 int(9) array(4) { ["username"]=> string(15) "'admin'" ["email"]=> string(12) "ceshi@qq.com" ["age"]=> int(18) ["blog"]=> string(24) "https://www.php.cn/blog/" }
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号