博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php global 全局变量小谈
阅读量:7297 次
发布时间:2019-06-30

本文共 969 字,大约阅读时间需要 3 分钟。

php 的全局变量看起来很好用,但稍有不慎,很容易被套住。

比如: 如果一个简单的php配置文件如下:

$name="Yi_Zhi_Yu";

当我们想要使用这个$name的时候,都知道使用include就行了。没错,这样可以。但假如我想把这个$name作为一个全局变量使用,以方便统一修改呢

也容易:

include("./config.inc");global $name;echo $name; //Yi_Zhi_Yu

那么问题来了,假如某个函数里我要用这个全局变量呢,或许你会这么写

function test(){    include("./config.inc"); //这里加载是错误的    global $name;    var_dump($name);}test();

Sorry, 你这样是得不到这个变量值得,得到的仅仅是个null

这就是我在实际中遇到的一个坑,即文件加载的全局变量的初始化只能在整个脚本的最外层,我说的最外层是指不能被包含在任何的函数体或者类里面

include("./config.inc"); //最外层初始化全局变量function test(){    global $name; //使用的时候定义其全局属性    echo $name; //Yi_Zhi_Yu}test();

那再来一个问题,一个在test里面被定义了全局属性的变量(假设$age=25),假如在外面被修改了值($age=27),然后这个变量($age)再在另一个函数中调用,这个时候的这个$age应该是哪个值呢,代码如下,是被初始化的时候值(25),还是在外面被修改了的值(27)呢。

function test(){    global $age;    $age=25;}function test2(){    global $age;    var_dump($age); //这个值应该是什么?}test();var_dump($age);$age=27;test2();

没错,这个值应该是27, 这就是全局变量,只不过这种定义和初始化都是在一个函数体内完成的(不过这种方式不推荐,一般都是在最上面我说的配置文件中初始化的,只在使用的时候定义其全局属性,但不会在代码中修改其值,仅仅作为配置项获取)。

转载地址:http://vsmjm.baihongyu.com/

你可能感兴趣的文章
能够提高PHP的性能的一些注意事项
查看>>
020-请你说一说app测试的工具
查看>>
软件测试2019:第五次作业—— 安全测试(含安全测试工具实验)
查看>>
SSM框架搭建总结(2)
查看>>
Python学习(19)正则表达式
查看>>
PHP中空字符串、0、null、empty和false之间的关系
查看>>
【深度学习篇】---CNN和RNN结合与对比,实例讲解
查看>>
201771010126 王燕《面向对象程序设计(Java)》第十二周学习总结
查看>>
XAML实例教程系列 - 资源(Resources)
查看>>
LWIP互联网资料汇总
查看>>
外贸术语
查看>>
网络传输流量控制策略小结
查看>>
上传大文件
查看>>
Mybatis面试集合(转)
查看>>
分布式系统的完整介绍(一)
查看>>
考点1
查看>>
Asp.net 程序连接orcle如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,...
查看>>
自己写的模板引擎,模板生成静态页面
查看>>
Android 数据库管理— — —更新数据
查看>>
014_捆绑包与显示模式
查看>>