批改状态:合格
老师批语:写很好!继续加油!
作用域的意义:
示例:
<?php// 全局作用域$name = '小刚';// 全局变量自动成为超全局数组$GLOBALS中的元素echo '<pre>' . print_r($GLOBALS, true) . '</pre>';echo $GLOBALS['name'];echo '<hr>';// 函数作用域function student(){// 私有变量// $myname = '超人';// return $myname;// 在函数中不能直接访问全局变量,要用global声明或者用超全局变量$GLOBALS来访问// 1.global声明// global $name;// return $name;// 2.超全局变量$GLOBALS访问return $GLOBALS['name'];}echo student();
常量前没有$,推荐全大写多个单词用“_”连接,必须要初始化,不让删除,不受作用域限制。
示例:
<?php// 查看当前系统常量// print_r(get_defined_constants(true));// 自定义常量,两种方式:const、define()。const MY_NAME = '小刚';define('MY_AGE', 18);// 只查看自定义常量,相当于只看系统常量数组中的一个元素print_r(get_defined_constants(true)['user']);// 类中的常量只允许用const定义,用define()会报错class People{const NAME = '小刚';}echo '<br>';// 如果常量名放在一个变量中,用constent()输出常量的值$name = 'MY_NAME';echo constant($name);echo '<br>';// null也可以用作常量名,但要用constant()获取值define('', '男');echo constant('');
魔术常量的值随系统变化而变化,无法自定义。
示例:
<?php// 预定义常量:echo '版本号: ' . PHP_VERSION . '<br>';echo '操作系统: ' . PHP_OS_FAMILY . '<br>';echo '最大整数: ' . PHP_INT_MAX . '<br>';echo '最大浮点数: ' . PHP_FLOAT_MAX . '<br>';echo '目录分隔符: ' . DIRECTORY_SEPARATOR . '<hr>';// 魔术常量:值随系统变化而变化,无法自定义echo '当前文件完整路径: ' . __FILE__ . '<br>';echo '当前文件所在目录: ' . __DIR__ . '<br>';echo '当前行号: ' . __LINE__ . '<br>';echo '当函数名: ' . __FUNCTION__ . '<br>';echo '当前类名: ' . __CLASS__ . '<br>';echo '当前trait名: ' . __TRAIT__ . '<br>';echo '当前类方法名: ' . __METHOD__ . '<br>';echo '当前命名空间: ' . __NAMESPACE__ . '<br>'
类、函数、接口、常量都是全局成员,不允许重复定义。
解决全局成员的命名冲突问题。
示例:
<?php// 命名空间namespace name1 {const MY_NAME = '超人';}namespace name2 {const MY_NAME = '小刚';}// 全局空间,默认空间没有名称namespace {echo name1\MY_NAME;echo '<br>';echo name2\MY_NAME;}
PHP过滤器作用:
外部数据来源有以下途径:
| 序号 | 数据来源 | 描述 |
|---|---|---|
| 1 | 表单 | 来自表音的用户输入数据 |
| 2 | Cookies | 来自浏览器中的 cookie |
| 3 | 服务器变量 | 防止伪装的合法访问 |
| 4 | Web 服务数据 | Web 请求的数据 |
| 5 | 数据库查询结果 | 数据表中的数据并不可信 |
常用的过滤器函数:
| 序号 | 函数 | 描述 |
|---|---|---|
| 1 | filter_list() |
|
| 2 | filter_id() |
|
| 3 | filter_var() |
过滤单个变量 |
| 4 | filter_var_array() |
过滤多个变量 |
| 5 | filter_has_var() |
检测是否存在某个外部变量 |
| 6 | filter_input() |
过滤单个外部变量 |
| 7 | filter_input_array() |
过滤多个外部变量 |
验证过滤器常量:
| 序号 | 过滤器函数 | 描述 |
|---|---|---|
| 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 |
正则验证 |
FILTER_VALIDATE_BOOLEAN: 布尔选项的返回值类型
| 序号 | 返回值 | 描述 |
|---|---|---|
| 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'=>...(复数)过滤器部分示例:
<?php// 查看当前php版本支持的过滤器// foreach (filter_list() as $filter) {// echo $filter . ' => ' . filter_id($filter) . '<br>';// }// echo '<hr>';// 1.单个变量过滤:filter_var(变量名, 过滤器常量)// $age = 18;// var_dump(filter_var($age, FILTER_VALIDATE_INT));// echo '<hr>';// 2.多个变量过滤:filter_var_array()// $name = '小刚';// $age = 10;// $sex = '男';// 将变量放到一个数组中// $people = ['name' => '小刚', 'age' => 10, 'sex' => '男'];// var_dump(filter_var_array($people, FILTER_VALIDATE_INT));// echo '<br>';// var_dump(filter_var_array($people, 513));// echo '<hr>';// 3.外部变量过滤:filter_input(输入类型, 变量名, 过滤器, 可选参数)// echo '标题:' . $_GET['title'];// 范围用'options' => ['min_range' => 22, 'max_range' => 55]表示// $data = ['options' => ['min_range' => 2000, 'max_range' => 10000]];// var_dump(filter_input(INPUT_GET, 'cost', FILTER_VALIDATE_INT, $data));// echo '<hr>';// 4.验证多个外部变量:filter_input_array()$data = ['name' => FILTER_SANITIZE_STRING,'cost' => FILTER_VALIDATE_INT,'exp' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 2, 'max_range' => 10]],'web' => FILTER_VALIDATE_URL];var_dump(filter_input_array(INPUT_GET, $data));
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号