批改状态:合格
老师批语:写的很好!
作用域是变量的生效范围
作用域是查找变量的工具
全局作用域:写到函数外部的变量。
超全局变量在每个脚本中都有预定义。
在全局中创建的变量,会自动成为超全局数组$GLOBALS中的一个元素。
超全局变量不受作用域限制,可在函数中直接访问。
函数作用域:
在PHP,函数会创建出一个独立的作用域,不能直接访问外部的变量。
在函数外部是全局变量。
函数内部是私有变量可直接访问。
<?php$siteName = '淘宝网';// 超全局变量// echo '<pre>'.print_r($GLOBALS,true).'</pre>';// echo $GLOBALS['siteName'];function getInfo(){// return $siteName;// 在函数做一个声明// global $siteName;// return $siteName;// 私有变量// $local = 'taobao.com';// return $local;return $GLOBALS['siteName'];}echo getInfo();echo '<hr>';echo $_SERVER['SCRIPT_NAME'];echo '<hr>';echo $_SERVER['SCRIPT_FILENAME'];


二种方式创建:关键字const、函数define
类常量只允许用const。
常量前没有$
常量必须初始化
常量不允许删除
常量不受作用域限制
常量推荐全部大写,多个单词之间用下划线连接。
// print_r(get_defined_constants(true));const APP_PATH ='/phpstudy_pro';define('APP_NAME','淘宝宝');// 查询用户自定义常量print_r(get_defined_constants(true)['user']);class user{const NATION = 'china';// define('D',200);}// 常量初始化$age;const SEX = 'BOY';// 常量不允许删除// unset(SEX);// print_r(get_defined_constants(true)['user']);echo APP_NAME;echo '<hr>';echo constant('APP_PATH');echo '<hr>';$name = 'APP_NAME';echo constant($name);

预定义常量:
echo '版本号: ' . PHP_VERSION . '<br>';echo '操作系统: ' . PHP_OS_FAMILY . '<br>';echo '最大整数: ' . PHP_INT_MAX . '<br>';echo '最大浮点数: ' . PHP_FLOAT_MAX . '<br>';echo '目录分隔符: ' . DIRECTORY_SEPARATOR . '<hr>';
魔术常量:
| 序号 | 魔术常量 | 描述 |
|---|---|---|
| 1 | __LINE__ |
文件中的当前行号 |
| 2 | __FILE__ |
文件的完整路径和文件名 |
| 3 | __DIR__ |
文件所在目录 |
| 4 | __FUNCTION__ |
当前的函数名称 |
| 5 | __CLASS__ |
当前类名称 |
| 6 | __TRAIT__ |
当前Trait名称 |
| 7 | __METHOD__ |
当前类方法名称 |
| 8 | __NAMESPACE__ |
当前命名空间名称 |
echo __FILE__.'<br>';echo __DIR__.'<br>';echo __LINE__.'<br>';

命名空间:
全局空间中的成员, 不允许重复定义。
与函数也是全局成员, 也不允许重复定义。
全局成员: 常量, 类, 函数, 接口
命名空间: 解决了全局成员 的命名冲突问题。
namespace class1{const APP_NAME ='京东';}namespace class2{const APP_NAME ='淘宝';// echo \class1\APP_NAME;}namespace{echo \class1\APP_NAME,'<br>';echo \class2\APP_NAME,'<br>';}

PHP 过滤器用于验证和过滤来自非安全来源的外部数据。
foreach()查看当前php版本支持的预定义过滤器
常用的过滤器函数:
| 序号 | 函数 | 描述 |
|---|---|---|
| 1 | filter_list() |
函数返回包含所有得到支持的过滤器 |
| 2 | filter_id() |
|
| 3 | filter_var() |
过滤单个变量 |
| 4 | filter_var_array() |
过滤多个变量 |
| 5 | filter_has_var() |
检测是否存在某个外部变量 |
| 6 | filter_input() |
过滤单个外部变量 |
| 7 | filter_input_array() |
过滤多个外部变量 |
filter_list()实例:
foreach(filter_list()as $filter){echo $filter . '=>'.filter_id($filter).'<br>';}

filter_var()实例:
$age =36;var_dump(filter_var($age,FILTER_VALIDATE_INT))

filter_var_array()实例:
$a = 200;$B ='230';var_dump(filter_var_array([$a,$B],FILTER_VALIDATE_INT));

filter_input(输入类型get/post, 变量名, 过滤器, 参数)实例:
echo 'id ='.$_GET['id'],'<br>';$options = ['options'=>['min_range'=> 1]];var_dump(filter_input(INPUT_GET,'id',FILTER_VALIDATE_INT,$options));

filter_input_array()实例:
$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];var_dump(filter_input_array(INPUT_GET, $args));

外部变量类型: INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV
过滤器主要分为二类: 验证过滤器, 清理过滤器
使用GET参数来演示外部变量的获取与验证/过滤
验证过滤器常量:
| 序号 | 过滤器函数 | 描述 |
|---|---|---|
| 1 | FILTER_VALIDATE_INT |
验证整数 |
| 2 | FILTER_VALIDATE_FLOAT |
浮点点验证 |
| 3 | FILTER_VALIDATE_BOOLEAN |
验证布尔项 |
| 4 | FILTER_VALIDATE_EMAIL |
验证邮箱 |
| 5 | FILTER_VALIDATE_URL |
验证 URL 地址 |
| 6 | FILTER_VALIDATE_IP |
验证 IP 地址 |
| 7 | FILTER_VALIDATE_REGEXP |
正则验证 |
外部数据来源:
| 序号 | 数据来源 | 描述 |
|---|---|---|
| 1 | 表单 | 来自表音的用户输入数据 |
| 2 | Cookies | 来自浏览器中的 cookie |
| 3 | 服务器变量 | 防止伪装的合法访问 |
| 4 | Web 服务数据 | Web 请求的数据 |
| 5 | 数据库查询结果 | 数据表中的数据并不可信 |
布尔选项的返回值类型:
| 序号 | 返回值 | 描述 |
|---|---|---|
| 1 | true |
“1”, “true”, “on” 和 “yes” |
| 2 | false |
“0”, “false”, “off”, “no”, “” |
| 3 | null |
除以上情形外 |
清理过滤器常量:
清理过滤器: 去掉非法字符,仅保留指定内容
| 序号 | 过滤器函数 | 描述 |
|---|---|---|
| 1 | FILTER_UNSAFE_RAW |
保持原始数据 |
| 2 | FILTER CALLBACK |
自定义函数过滤数据 |
| 3 | FILTER_SANITIZE_STRING |
去除标签以及特殊字符:strip_tags() |
| 4 | FILTER_SANITIZE_STRIPPED |
“string” 过滤器别名 |
| 5 | FILTER_SANITIZE_ENCODED |
URL-encode 字符串,去除或编码特殊字符 |
| 6 | FILTER_SANITIZE_SPECIAL_CHARS |
HTML 转义字符, 等价于 htmlspecialchars() |
| 7 | FILTER_SANITIZE_EMAIL |
仅保留邮箱地址的合法字符 |
| 8 | FILTER_SANITIZE_URL |
仅保留合法的 URL, 必须从协议开始http/https |
| 9 | FILTER_SANITIZE_NUMBER_INT |
仅保留合法的数字和正负号+- |
| 10 | FILTER_SANITIZE_NUMBER_FLOAT |
仅保留合法的数字和正负号+- 以及指数 .,eE |
| 11 | FILTER_SANITIZE_MAGIC_QUOTES |
等价于函数: addslashes() |
选项与标志:
可以对过滤器设置选项和标志, 对数据进行更加精准的过滤处理.
选项与标志使用数组键名表示: 'options'=>[...], 'flags'=>...(复数)
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号