php 静态属性什么作用域,变量类型、超全局变量、静态变量、变量与常量作用域和过滤器的理解...

变量、过滤器和常量

1.1 函数作用域

函数作用域是function关键字创建的作用域

functionindex()

{

$date['uid']=1;

return$date['uid'];

}

unset($date['uid']);//未定义报错

echo index();//1

unset($date['uid']);//未定义报错

functionadd()

{

$date['pid']=1;

unset($date['pid']);

unset($date['uid']);

return$date['pid'];//未定义报错

}

echo add();//无输出

echo index();//1

小结:

date[‘uid’]只能在index函数中起作用 在index函数外访问会出现未定义报错

1.2 全局作用域

函数之外的变量生效范围

1.3 变量类型私有变量

全局变量

超全局变量

1.3.1 私有变量

函数中定义的变量

1.3.2 全局变量

函数之外定义的变量

1.3.3 超全局变量

超全局变量,也叫超全局数组,随系统加载,因此在所有脚本中均有定义,全局和函数中都可以访问

序号

变量名

描述

1

$GLOBALS

引用全局作用域中可用的变量

2

$_SERVER

服务器执行环境信息

3

$_GET

HTTP GET 请求:通过 URL 参数传递给当前脚本的变量的数组

4

$_POST

HTTP POST 请求: 将变量以关联数组形式传入当前脚本

5

$_FILES

HTTP 文件上传变量,保存着上传文件的全部信息

6

$_COOKIE

通过 HTTP Cookies 方式传递给当前脚本的变量的数组

7

$_SESSION

当前脚本可用 SESSION 变量的数组

8

$_REQUEST

默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组

9

$_ENV

通过环境方式传递给当前脚本的变量的数组

1.3.4 global 和 $GLOBALS 的使用global$name="xu.bug";//Parse error: syntax error, unexpected '=', expecting ',' or ';'

functionindex()

{

//试图引用函数外面的变量

echo"myname is ".$name."
";

}

index();

即上述代码有错误。原因是 global的用法不对,不能在用global声明变量的同时给变量赋值。

global$name;

$name="xu.bug";

functionindex()

{

//试图引用函数外面的变量

echo"myname is ".$name."
";//Notice:Undefined variable: name in

mynameis

}

index();

即上述代码有错误。原因是 global的用法不对,不能在用global声明变量的同时给变量赋值。

综合以上得出结论:

global的正确用法是:”在一个函数中引入外部的一个变量,如果该变量没有通过参数传递进来,那么就通过global引入进来。” 也就是说,当一个函数引用一个外部变量时,可以在函数内通过global来声明该变量,这样该变量就可以在函数中使用了(相当于当作参数传递进来)。

$name="xs.bug";

functionindex()

{

global$name;

//试图引用函数外面的变量

echo"myname is ".$name."
";

}

index();//myname is xs.bug

即上述代码说明global是起传递参数的作用,而并非使变量的作用域为全局 。

$name="xs.bug";

functionindex()

{

$gname=$GLOBALS['name'];

//试图引用函数外面的变量

echo"myname is ".$gname."
";

}

index();//myname is xs.bug

1.3.5 static 静态变量

在函数执行完后,变量值仍然保存 不用静态变量 调用函数后会马上进行销毁

functiontestStatic(){

static$val=1;

echo $val;

$val++;

}

testStatic();//output 1

testStatic();//output 2

testStatic();//output 3

1.4 filter过滤器

相关函数

filter_list() 获去过滤器名称

filter_id() 获去过滤器id

filter_input(); 单个传参值验证

filter_input_array(); 数组传参验证

foreach(filter_list()as$filter){

echo $filter.'------'.filter_id($filter).'
';

}

//可遍历出所有名称和id

简单验证

$args=[

'username'=>513,

'email'=>274,

'age'=>['filter'=>257,'flags'=>FILTER_REQUIRE_SCALAR,'options'=>['min_range'=>18,'max_range'=>80]],

'blog'=>273,

];

var_dump(filter_input_array(INPUT_GET,$args));.

1.5 常量

在整个运行过程中,固定不变的值

1.5.1 定义常量

1 define(常量名,值,[是否区别大小写]) true表示不区分大小写,默认是false,常量名前没有$符,常量名推荐使用大写

define('NAME','tom');//定义常量

define('PI',3.14,true);//定义常量,不区分大小写

echo NAME,'
',Pi;

//true表示不区分大小写,默认是区分大小写的。

2、定义常量可以用特殊字符,但是在调用的时候必须用constant关键字调用

define('%-%','tom');

echo constant('%-%');//通过constant获取特殊字符作为常量名的常量

3、判断常量是否定义,通过defined()判断常量是否已经定义

if(!defined('NAME')){

define('NAME','berry');

}

echo NAME;//berry

4、还可以使用const关键字定义常量

constNAME='tom';

echo NAME;//tom

5、define()和const 区别

define()可以函数和流程控制中定义 而const不行

const 可以用在类中 而 define()不行

1.5.2魔术常量魔术常量属于”预定义常量”, 比较特殊所以单独列出

所谓”魔术”, 是指常量的值, 会随它们在代码中的位置改变而改变

魔术常量不区分大小写, 但是推荐全部大写

序号

魔术常量

描述

1

__LINE__

文件中的当前行号

2

__FILE__

文件的完整路径和文件名

3

__DIR__

文件所在目录

4

__FUNCTION__

当前的函数名称

5

__CLASS__

当前类名称

6

__TRAIT__

当前Trait名称

7

__METHOD__

当前类方法名称

8

__NAMESPACE__

当前命名空间名称

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值