php文件命名空间的作用域,php的变量作用域&常量&命名空间初步认识和变量过滤器...

变量作用域

作用域是变量的生效范围

作用域是查找变量的工具

1.全局作用域

写在函数外的变量:是全局作用域的变量

例:

$siteName='hello';

2.函数作用域

在函数内部使用外部变量的两种方法

1.使用global在函数内部声明一下要使用的外部变量

// 外部定义变量

$siteNAme='hello';

functiongetinfo(){

// 使用globel在函数内部声明一下这个变量实现调用外部变量

global$siteName;

return$siteName;

}

// 调用函数

echo getinfo();// 输出 hello

2.声明一个超全局数组,在全局中创建的变量会自动成为超全局数组$GLOBALS中的一个元素[叫全局变量]

例:

// 外部定义一个变量

$siteName='hello';

functiongetinfo(){

// 在内部使用超全局数组访问超全局变量

$GLOBALS['siteName']

}

// 调用函数

echo getinfo();// 输出hello常量

定义常量的两种方法

1.关键字const 常量名;

例:

constSITE_NAME='demo';

2.函数define('常量名','常量值');

例:

define('APP_NAME','管理系统');

get_defined_constants(true)查看系统中预定义的常量

get_defined_constants(true);这里的参数true写上会把系统的预定义常量分类

get_defined_constants(true)['user']查询用户自定义的常量

类中的常量只能用const关键字来定义

例:

classUser{

constNAME='张三';

}注意事项

1.常量前没有$符号

2.常量必须初始化

例:

constNAME='张三';或define('NAME','张三');

3.常量不予许删除

例:

constNAME='张三';unset(NAME);// 不被允许

4.常量不受作用域限制

例:

constNAME='张三';

functiongetinfo(){

returnName;

}

echo getinfo();// 输出 "张三"

5.在同一空间内常量不予许重定义[相当于不予许重新赋值]

例:

// 在同一空间下这样是错误的

constAPP_PATH='张三';

constAPP_PATH='李四';预定义常量

预定义常量

作用

PHP_VERSION

查看版本号

PHP_OS_FAMILY

查看操作系统

PHP_INT_MAX

查看最大整数

PHP_FLOAT_MAX

查看最大浮点数

DIRECTORY_SEPARATOR

查看目录分隔符

魔术常量

魔术常量

描述

__LINE__

文件中的当前行号

__FILE__

文件的完整路径和文件名

__DIR__

文件所在目录

__FUNCTION__

当前的函数名称

__CLASS__

当前类名称

__TRAIT__

当前Trait名称

__METHOD__

当前类方法名称

__NAMESPACE__

当前命名空间名称

命名空间

全局成员不允许被重复定义,类与函数也是全局成员,也不允许重复定义

全局成员包括:常量,类[接口属于类的一种],函数

创建命名空间

namespace 空间名 { 内容 } // 当前文件独属于当前这个命名空间时{}可去掉直接 namespace 命名空间名称 即可

创建命名空间:

例:

// 命名空间ns1

namespacens1{

constAPP_PATH='/phpstudy_pro';

}

// 命名空间ns2

namespacens2{

constAPP_PATH='/public';

// 在命名空间ns2中访问命名空阿ns1中的常量APP_PATH

echo \ns1\APP_PATH;

}

// 访问命名空间中的常量

//在全局空间中访问命名空间中的常量

namespace{

echo \ns1\APP_PATH,"
";

echo \ns2\APP_PATH,"
";

}变量过滤器

查看当前php版本支持的预定义过滤器有哪些

foreach(filter_list()as$filter){

echo $filter.' => '.filter_id($filter).'
';

}

// 我的当前php版本7.1.13 输出支持的预定义过滤器

// 左边过滤器名称 ,右边过滤器id

int===>257

boolean===>258

float===>259

validate_regexp===>272

validate_domain===>277

validate_url===>273

validate_email===>274

validate_ip===>275

validate_mac===>276

string===>513

stripped===>513

encoded===>514

special_chars===>515

full_special_chars===>522

unsafe_raw===>516

email===>517

url===>518

number_int===>519

number_float===>520

magic_quotes===>521

callback===>10241.过滤单个变量 filter_var()

filter_var(要过滤的变量, 过滤器常量)

filter_var(要过滤的变量,过滤器常量,对过滤变量的限制)

FILTER_VALIDATE_INT过滤/检测当前变量是否是整数型数值

FILTER_VALIDATE_EMAIL过滤/检测当前变量是否是符合邮箱类型

例:

$age=21;

var_dump(filter_var($age,FILTER_VALIDATE_INT));// 输出int(21);

$ages='23';// 当前变量的值是字符串型数值

var_dump(filter_var($age,FILTER_VALIDATE_INT));// 输出int(23);

`解释:过滤器验证时会自动把过滤变量转换为字符串,所以过滤变量的值为数值型字符串可以如$age='abc'这就直接输出false因为abc不是数值型字符串不能转换为有效数值`

// 给过滤变量添加限制

例:

$ages='23';

// 这里声明一个二位数组来限制过滤变量$age的值 min-range是最小值 max_range是最大值

// 如果过滤的变量超过限制的值也会输出false;

$options=['options'=>['min-range'=>'18','max-range'=>'80']];

// 输出打印过滤变量

var_dump(filter_var($age,FILTER_VALIDATE_INT,$options));// 输出int(23);

// 过滤邮箱

例:

$email='ceshi@qq.com';// 定义一个邮箱格式字符串

var_dump($email,FILTER_VALIDATE_EMAIL);// 输出"ceshi@qq.com"

// 另一种方式可以过滤常量的id代替常量名

var_dump($email,274);// 输出效果和写过滤常量的效果一样 输出"ceshi@qq.com"2.验证过滤多个变量 filter_var_array()

filter_var_array(过滤变量[把所有要过滤的变量放进一个数组在赋值给一个变量],过滤器名称)

例:

$a=10;

$b='80';

// 把所有要过滤验证的变量放进一个数组

$arr=[$a,$b];

// 过滤检测当前数组值是否都是整数型不是的输出false是的直接输出

var_dump(filter_var_array($arr,FILTER_VALIDATE_INT));// 输出结array(2) { [0]=> int(10) [1]=> int(80) }3.过滤验证外部变量filter_input()

filter_input(输入传递方式/get,post,变量名,过滤器,参数)

例:

// 使用GET方式传参来演示外部变量的获取和验证/过滤

$id=$_GET['id'];// 这个id是通过get方式从地址栏中传过来的

$options=['options'=>['min_range'=>1]];// 限制id最小是1

var_dump(filter_input(INPUT_GET,'id',FILTER_VALIDATE_INT,$options));

4.同时验证多个外部变量

filter_var_array(输入传递方式/get,post,过滤数组)

例:

$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

];

// 哪一个不符合直接输出false

var_dump(filter_input_array(INPUT_GET,$args));// 输出 int(9) array(4) { ["username"]=> string(15) "'admin'" ["email"]=> string(12) "ceshi@qq.com" ["age"]=> int(18) ["blog"]=> string(24) "https://www.php.cn/blog/" }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值