PHP 变量作用域、常量的定义、常用的变量过滤器
PHP 变量作用域
- 作用域是查找变量的工具
- 作用域是变量的生效范围
- 全局作用域:写在函数的外部的变量,不能在函数中直接使用。
- 函数作用域:函数内部创建的变量,私有变量,能直接在函数中访问。
- 函数中访问外部变量有两种方式:
- 1.函数内使用
global
声明外部变量 2.使用超全局变量$GLOBALS
来访问
<?php
//外部变量 全局作用域
$name = 'simaqingshan';
$age = 20;
//函数作用域
function getName(){
//1.global声明 访问外部全局变量
global $name;
//2.$GLOBALS超全局变量访问外部变量
//私有变量 可以直接访问
$height = 180;
return $name.' '.$GLOBALS['age'].' '.$height;
}
echo getNAME();

- 还有一些其它超全局变量 如
$_SERVER
echo $_SERVER['SCRIPT_NAME'];
echo $_SERVER['REQUEST_URI'];
PHP 常量
自定义常量
- 查看当前有哪些可用的常量
print_r(get_defined_constants(true));
- 用户自定义常量方式:
- 1.
const
关键字方式:类中只允许使用const
定义常量 - 2.
define
关键字方式
- 使用
constant()
拿到常量
<?php
const NAME = 'simaqingshan';
define('NAME1', 'simaqingshan');
//查看当前有哪些可用的常量
print_r(get_defined_constants(true));
- 常量特点:
- 常量前面没有
$
符号 - 常量必须初始化
- 常量不能删除
- 常量不受作用域限制
- 常量推荐全部大写,多个单词之间使用下划线连接
预定义常量、魔术常量
<?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 '当前行号:'. __LINE__ . '<br>';
echo '当前文件:'. __FILE__ . '<br>';
echo '当前目录:'. __DIR__ . '<br>';

命名空间
<?php
namespace ns1{
const name = 'sima';
}
namespace ns2{
const name = 'qingshan';
}
//创建全局空间
namespace{
echo \ns1\name.'<br>';
echo \ns2\name.'<br>';
}

PHP 变量过滤器
<?php
foreach(filter_list() as $filter){
echo $filter. '=>'.filter_id($filter).'<br>';
}
名称 |
描述 |
FILTER_VALIDATE_INT |
验证值是否为整数 |
FILTER_VALIDATE_EMAIL |
验证值是否为 email |
FILTER_VALIDATE_URL |
验证值是否为 URL 地址 |
FILTER_VALIDATE_BOOLEAN |
验证值是否为 BOOL |
FILTER_VALIDATE_IP |
验证值是否为 IP 地址 |
验证单个变量
filter_var(要过滤的变量,过滤器常量,验证可选条件)
<?php
$age = 60;
$option = ['options'=>['min_range'=>18,'max_range'=>60]];
var_dump(filter_var($age, FILTER_VALIDATE_INT, $option));

验证多个变量
<?php
$arr=[30,50,'hello'];
var_dump(filter_var_array($arr,FILTER_VALIDATE_INT));

验证外部变量
filter_input()
: 函数从外部获取输入(比如表单输入),并进行验证。
INPUT_GET
INPUT_POST
INPUT_COOKIE
INPUT_SERVER
INPUT_ENV
<?php
var_dump(filter_input(INPUT_GET,'age', FILTER_VALIDATE_INT));

验证多个外部变量
<?php
$args=[
'username'=>FILTER_SANITIZE_STRING,
'email'=>FILTER_VALIDATE_EMAIL,
'age'=>['filter'=>FILTER_VALIDATE_INT, 'option'=>['min_range'=>18,'max_range'=>60]],
'blog'=>FILTER_VALIDATE_URL
];
var_dump(filter_input_array(INPUT_GET, $args));
