<?php
//全局作用域:函数外部定义的变量,只能在函数外部进行访问
$userName = '黄剑聪';
echo $userName;
?>
第一种:
<?php
//函数作用域:函数外部定义的变量,只能在函数外部进行访问
$userName = '你好,黄剑聪';
// echo $userName;
function getinfo()
{
//访问函数外部的变量有两种方法
//第一种,在函数中做一个声明用global
global $userName;
return $userName;
}
echo getinfo();
?>
第二种:
<?php
//函数作用域:函数外部定义的变量,只能在函数外部进行访问
$userName = '黄剑聪';
// echo $userName;
function getinfo()
{
//访问函数外部的变量有两种方法
//第二种,通过超全局变量$GLOBALS来访问
//超全局变量, 不受作用域限制,可以在函数中直接访问
return $GLOBALS ['userName'];
}
echo getinfo();
?>
常量前面没有美元符号($);
常量必须初始化;
常量不能删除
输出:echo constant('');
常量可以不用理会变量的作用域而在任何地方定义和访问;
常量一旦定义就不能被重新定义或者取消定义;
<?php
//使用关键字 const 定义常量
const APP_PATH = '/phpstudy_pro';
echo APP_PATH;
?>
<?php
//使用关键字 define 定义常量
define('APP_NAME', '人才管理系统');
echo APP_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__ |
当前命名空间名称 |
命名空间: 解决了全局成员 的命名冲突问题
全局空间中的成员, 不允许重复定义
其实类与函数也是全局成员, 也不允许重复定义
全局成员: 常量, 类, 函数, 接口
以一个案例来解说:
<?php
namespace a {
const SITE_NAME = 'PHP中文网';
}
namespace b {
const SITE_NAME = 'www.php.cn';
}
//全局空间: 匿名空间
namespace {
echo \a\SITE_NAME, '<br>';
echo \b\SITE_NAME, '<br>';
}
?>
过滤器简介:PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤。
查看当前php版本支持的预定义过滤器:foreach (filter_list() as $filter) {echo $filter . ' => ' .filter_id($filter);
<?php
//过滤单个变量:filter_var(要过滤的变量, 过滤器常量)
$var = 35;
$options = ['options'=>['min_range'=> 35, 'max_range'=> 60]];
var_dump(filter_var($var, FILTER_VALIDATE_INT, $options));
//如何给这个数值设定为一个范围:使用$options参数 min_range(最小值),max_range(最大值)
echo '<hr>';
$username = 'huang';
var_dump(filter_var($username,FILTER_SANITIZE_STRING));
?>
<?php
$a = 'ab';
$b = 'cde';
$arr = [$a, $b];
var_dump(filter_var_array($arr, FILTER_SANITIZE_STRING));
//echo '<hr>';
$a = 10;
$b = '90';
$arr = [$a, $b];
var_dump(filter_var_array($arr, FILTER_VALIDATE_INT));
?>
<?php
// 外部过滤器:filter_input(输入类型get/post, 变量名, 过滤器, 参数)
// 使用GET参数来演示外部变量的获取与验证/过滤
var_dump(filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT));
?>
<?php
$args=[
'email'=>FILTER_SANITIZE_EMAIL,
'ags'=>['filter'=>FILTER_VALIDATE_INT, 'options'=>['min_range'=> 18, 'max_range'=> 60]],
'username'=>FILTER_SANITIZE_STRING,
'blog'=>FILTER_VALIDATE_URL,
];
var_dump(filter_input_array(INPUT_GET, $args));
?>
外部数据来源:
| 序号 | 数据来源 | 描述 |
| —— | ——————— | ——————————— |
| 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()
| 过滤多个外部变量 |
外部变量类型: INPUT_GET
, INPUT_POST
, INPUT_COOKIE
, INPUT_SERVER
, INPUT_ENV
过滤器主要分为二类: 验证过滤器, 清理过滤器
验证过滤器: 又叫”验证器”, 主要用于数据的类型和格式验证
| 序号 | 过滤器函数 | 描述 |
| —— | ————————————- | ——————- |
| 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'=>...
(复数)