变量作用域
<?php
// 全局作用域
$name ='peter';
// 全局变量自动成为超全局数组$GLOBALS中的元素
echo print_r($GLOBALS,true).'<br>';
echo $GLOBALS['name'];
echo '<hr>';
// 函数作用域
function boss(){
// 私有变量
$myfriend ='lindy';
return $myfriend;
// 在函数中不能直接访问全局变量,要用global声明或者用超全局变量$GLOBALS来访问
// global声明
global $name;
return $name;
// 超全局变量$GLOBALS访问
return $GLOBALS['name'];
}
echo boss();
常量
<?php
// 常量 由const,define定义,要初始化,不能删除,不受作用域限制
const MY_NAME = 'evan';
define('MY_AGE',22);
// 自定义常量是系统常量数组中的一个元素
print_r(get_defined_constants(true)['user']);
// 类中的常量只允许用const定义,用define()会报错
class People
{
const NAME = 'evan';
}
echo '<br>';
// 如果常量名放在一个变量中,用constent()输出常量的值
$name = 'MY_NAME';
echo constant($name);
echo '<br>';
// null也可以用作常量名,但要用constant()获取值
define('','male');
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过滤器作用:验证和过滤来自于非安全来源的外部数据。
<?php
// 查看当前php版本支持的过滤器
foreach(filter_list() as $filter){
echo $filter. '=>' .filter_id($filter).'<br>';
}
// 1.单个变量过滤:filter_var(变量名,过滤器常量)
$age = 22;
var_dump(filter_var($age,FILTER_VALIDATE_INT));
// 2.多个变量过滤:filter_var_array()
$name = 'evan';
$age = 22;
$sex ='男';
// 将变量放到一个数组中
$people = ['name'=>'evan', 'age'=>22, 'sex'=>'男'];
var_dump(filter_var_array($people,FILTER_VALIDATE_INT));
echo '<br>';
var_dump(filter_var_array($people,513));
// 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));
// 4.验证多个外部变量:filter_input_array()
$data =[
'name'=>FILTER_SANITIZE_STRING,
'cost'=>FILTER_VALIDATE_INT,
'exp'=>['filter'=>FILTER_VALIDATE_INT, 'optins'=>['min_range'=>2,'max_range'=>10]],
'web'=>FILTER_VALIDATE_URL
];
var_dump(filter_input_array(INPUT_GET,$data));
常用的过滤器函数:
序号 |
函数 |
描述 |
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 |
正则验证 |