php global 全局变量小谈

php中文网
发布: 2016-06-23 13:36:23
原创
816人浏览过

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

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

$name="Yi_Zhi_Yu";
登录后复制

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

也容易:

include("./config.inc");global $name;echo $name; //Yi_Zhi_Yu
登录后复制

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

立即学习PHP免费学习笔记(深入)”;

Studio Global
Studio Global

Studio Global AI 是一个内容生成工具,帮助用户客制化生成风格和内容,以合理价格提供无限生成,希望将 AI 带给全世界所有人。

Studio Global 103
查看详情 Studio Global
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, 这就是全局变量,只不过这种定义和初始化都是在一个函数体内完成的(不过这种方式不推荐,一般都是在最上面我说的配置文件中初始化的,只在使用的时候定义其全局属性,但不会在代码中修改其值,仅仅作为配置项获取)。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号