1.常量
1.1:常量的定义
- 使用
const
创建常量
const USER_NAME='小龙女';
echo USER_NAME;
- 使用
define()
创建常量
define('USER_NAME','小龙女');
echo USER_NAME;
1.2:查看所有当前定义的常量
可以使用
get_defined_constants()
查看所有当前定义的常量(含预定义及用户自定义)get_defined_constants()
返回为数组
//返回一个一维数组显示,常量+值
print_r(get_defined_constants());
//返回一个二维数组分类显示,一维:分类名称;二维:常量+值
print_r(get_defined_constants(true));
//只返回用户自定义分类常量+值
print_r(get_defined_constants(true)['user']);
1.3:预定义常量
// 预定义常量
echo '版本号: ' . PHP_VERSION . '<br>';
echo '操作系统: ' . PHP_OS_FAMILY . '<br>';
echo '最大整数: ' . PHP_INT_MAX . '<br>';
echo '最大浮点数: ' . PHP_FLOAT_MAX . '<br>';
echo '目录分隔符: ' . DIRECTORY_SEPARATOR . '<hr>';
可以使用
get_defined_constants()
查看所有当前定义的常量
1.4:魔术常量(特殊)
序号 | 魔术常量 | 描述 |
---|---|---|
1 | __LINE__ |
文件中的当前行号 |
2 | __FILE__ |
文件的完整路径和文件名 |
3 | __DIR__ |
文件所在目录 |
4 | __FUNCTION__ |
当前的函数名称 |
5 | __CLASS__ |
当前类名称 |
6 | __TRAIT__ |
当前Trait 名称 |
7 | __METHOD__ |
当前类方法名称 |
8 | __NAMESPACE__ |
当前命名空间名称 |
// 1、查询文件位置(不含文件名称)
echo __DIR__ ;
//输出:D:\phpstudy_pro\WWW
//----------------------------------------------
// 2、查询文件位置(含文件名称)
echo __FILE__ ;
//输出:D:\phpstudy_pro\WWW\index.php
//----------------------------------------------
class tempClass {
function getClass() {
return '类名为:' . __CLASS__ ;
}
}
$viewClass = new tempClass();
echo $viewClass->getClass();
// 输出:类名为:tempClass
1.5:解决全局成员命名冲突
// 全局成员,不允许重复定义(全局成员包含: 常量, 类(接口), 函数 )
// const STUDENT_NAME = '张三';
// const STUDENT_NAME = '李四';
//解决方法:创建命名空间
namespace class1 {
const STUDENT_NAME = '张三';
}
namespace class2 {
const STUDENT_NAME = '李四';
}
// 全局空间: 也叫匿名空间
namespace {
echo \class1\STUDENT_NAME, "<br>";
//输出:张三
echo \class2\STUDENT_NAME, "<br>";
//输出:李四
}
// 命名空间: 解决了全局成员 的命名冲突问题
1.6:定义常量注意事项
- 常量前没有$
- 常量必须初始化(定义时赋值)
- 常量不能删除(如
unset
) - 常量不受作用域限制
- 常量推荐全部大写,多个单词之间使用下划线连接
- 类常量只允许用const(不能使用
define()
)
2.变量的作用域
- 作用域是变量的生效范围
- 作用域是查找变量的工具
2.1:全局变量(函数的外部的变量)
- 在php,函数会创建出一个独立的作用域,不能直接访问外部变量
//创建一个变量
$siteName='PHP中文网';
//创建一个函数
function getName()
{
// 方法1:在函数中做一个声明
// global $siteName;
// return $siteName;
//-------------------------------------------
// 方法2. 通过超全局变量$GLOBALS访问
return $GLOBALS['siteName'];
}
echo getName();
2.2:局部变量(私有变量,函数内部的变量)
//创建一个函数
function getName()
{
//创建一个变量
$siteName='PHP中文网';
return $siteName;
}
echo getName();
3.变量过滤器
- PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入。
3.1:查看当前php版本支持的预定义过滤器
- 可以使用
filter_list()
函数返回包含所有得到支持的过滤器(数组)
print_r(filter_list());
- 也可以通过循环得到过滤器及
filter_id
foreach (filter_list() as $filter) {
echo $filter . ' => ' .filter_id($filter) . '<br>';
}
3.2:过滤器函数:
No | 函数 | 描述 |
---|---|---|
1 | filter_var() | 通过一个指定的过滤器来过滤单一的变量 |
2 | filter_var_array() | 通过相同的或不同的过滤器来过滤多个变量 |
3 | filter_input | 获取一个输入变量,并对它进行过滤 |
4 | 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 |
正则验证 |
3.2.1:filter_var()
过滤单个
- 语法:
filter_var(要过滤的变量,过滤器常量,选项)
- 邮箱验证示例:
//定义变量:邮箱地址
$email = 'admin@phpcn';
//定义变量:对邮箱地址进行过滤(未附加选项)
$checkEmail=filter_var($email, FILTER_VALIDATE_EMAIL);
//FILTER_VALIDATE_EMAIL也可以使用filter_id
//判断:如果邮箱地址为:false,表示输入错误,否则输入正确
if(!$checkEmail){
echo '邮箱('.$email .')输入错误!';
}else{
echo '邮箱('.$email .')输入正确!';
}
- 年龄验证示例:
//定义变量:年龄
$age = 116;
//选项(要求年龄在18~60岁之间)
$int_options = [
'options'=>['min_range'=> 18, 'max_range'=> 60]
];
//定义变量:对年龄进行过滤(整数+年龄要求)
$checkAge=filter_var($age, FILTER_VALIDATE_INT,$int_options);
//判断:如果年龄为整数且满足int_options要求,表示输入正确,否则输入错误
if($checkAge){
echo '年龄('.$age .')输入正确!';
}else{
echo '年龄('.$age .')输入错误!';
}
3.2.2:filter_var_array()
过滤多个
//定义数组变量:多个数值
$number = [12,23,1.34];
print_r(filter_var_array($number, FILTER_VALIDATE_INT));
// 输出:Array ( [0] => 12 [1] => 23 [2] => )
// 第3个非整数验证失败不输出
3.2.3:filter_input()
获取单个外部变量过滤
- 语法:
filter_input(输入类型get/post, 变量名, 过滤器, 参数)
- 通常通过 http请求发送过来的,表单,get,post
- 比如:
http://php.pro/?id=3
var_dump(filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT));
3.2.4:filter_input_array()
获取多个外部变量过滤
- 比如:
http://php.pro/?username=peter&email=peter@php.cn&age=18
// 同时验证多个外部变量
$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));
4.总结
- 通过学习,掌握了常量的定义及如何查看所有当前定义的常量;
- 理解了预定义常量,魔术常量的用法;
- 对变量的作用域有了初步认识;
- 理解了变量过滤器的作用。