热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php全局变量的内存管理

:本篇文章主要介绍了php全局变量的内存管理,对于PHP教程有兴趣的同学可以参考一下。
话不多说,code is the true。

第一段:

class Globals{

public $var = array();

function __construct(){

global $_fanwe;

$_fanwe=2;

}

}

new Globals();

function Nice(){

global $_fanwe;

echo $_fanwe;

}

Nice();

input :2

第二段:

function globals(){

global $_fanwe;

$_fanwe=2;

}

function Text(){

global $_fanwe;

echo $_fanwe;

}

globals();

Text();

input :2

以上的两个文件分别测试,得出的结果依然是2。原因是全局变量在php编译的时候已经注册了全局变量并且驻足于php内存当中,直到该php的进程结束,php的垃圾回收机制销毁掉这个全局变量。

php在编译时,当某个定义的函数被调用时,php会给该函数分配一定的内存空间和一定的资源作为执行该函数的条件,分给函数的空间无非就是存储变量以及函数执行过程中需要返回的结果,反正这部分空间作为一个php进程里面的空间,所以,当这个函数里面定义了一个全局变量,这个全局变量也将会被放进该函数被分配的内存当中,虽然函数里面定义的全局变量,由于驻足于内存当中,所以可以被其它函数当做真正的全局变量来使用。注意一点,能这么使用的前提是在你使用这个全局变量前一定要让这个全局变量驻足于内存,也就是先调用含有这个全局变量的函数(这是这个全局变量驻足于内存了),你才能使用这个全局变量。为了验证,再来看看下面一段代码以及它的输出:

function globals(){

global $_fanwe;

$_fanwe=2;

}

function Text(){

global $_fanwe;

echo $_fanwe;

}

Text();

其实这个函数是没有任何输出的,因为在Text连$_fanwe没有被赋值,你可能会问在globals这个函数上面不是已经定义$_fanwe;为全局变量而且还为其赋值了么?怎么还没输出呢?对比上段程序,你可以发现并没有调用globals()函数。。没有调用,自然内存没有,你哪能输出?

说这么多,其实类也是一样,一个类没有被实例化之前只是个虚构的定义,并不存在于内存当中,一旦实例化了这个类,php就会给这个类分配内存,驻足于内存,直到这个php进程结束或者在该php进程当中结束这个类,这个全局变量才消失,道理是和上面举的函数一样的。

唉,说这么多是因为研究了一些框架有感而发。。。

以上就介绍了php全局变量的内存管理,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

推荐阅读
  • Go语言实现文件读取与终端输出
    本文介绍如何使用Go语言编写程序,通过命令行参数指定文件路径,读取文件内容并将其输出到控制台。代码示例中包含了错误处理和资源管理的最佳实践。 ... [详细]
  • 本文对唐代诗人李白的《赠潘侍御论钱少阳》进行了深入的解析与翻译,旨在揭示诗中所蕴含的情感及历史背景。 ... [详细]
  • 本文综述了沙尘天气的气象条件,特别关注北京地区的沙尘污染特征,探讨了沙尘期间的气溶胶光学厚度变化、大颗粒物浓度上升以及冷锋作为重要起沙条件的作用。 ... [详细]
  • 深入解析Unity3D游戏开发中的音频播放技术
    在游戏开发中,音频播放是提升玩家沉浸感的关键因素之一。本文将探讨如何在Unity3D中高效地管理和播放不同类型的游戏音频,包括背景音乐和效果音效,并介绍实现这些功能的具体步骤。 ... [详细]
  • 本文详细探讨了能力模型(Competency Model)的概念及其在人力资源管理中的应用,涵盖职位体系设计、薪酬激励策略及绩效管理等方面。通过深入分析冰山模型的核心构成,以及不同类型人才的关键素质,旨在为企业提供科学的人才管理和发展的指导。 ... [详细]
  • 本文提供了处理WordPress网站中出现过多重定向问题的方法,包括检查DNS配置、安装SSL证书以及解决数据库连接错误等步骤。 ... [详细]
  • 解决ADODB连接Access时出现80004005错误的方法
    本文详细介绍了如何解决在使用ADODB连接Access数据库时遇到的80004005错误,包括错误原因分析和具体的解决步骤。 ... [详细]
  • 本文探讨了一种常见的C++面试题目——实现自己的String类。通过此过程,不仅能够检验开发者对C++基础知识的掌握程度,还能加深对其高级特性的理解。文章详细介绍了如何实现基本的功能,如构造函数、析构函数、拷贝构造函数及赋值运算符重载等。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 本文对宋代著名诗人吕渭老的作品《情久长》进行了细致的翻译和赏析,深入探讨了诗中蕴含的情感与艺术特色。 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • 本文提供了一种通过调整内核电压来增强设备抗干扰能力的方法,以解决部分杰里AC696X设备在LDO15模式下通话时出现的重启问题。 ... [详细]
  • 探讨了在HTML表单中使用元素代替进行表单提交的方法。 ... [详细]
  • 如何在PPT中创建交互式跳转按钮
    许多企业在日常工作中都会用到PPT,但你知道如何在PPT中制作一个可以实现页面跳转的按钮吗?本文将详细介绍在PPT中创建跳转按钮的方法和步骤。 ... [详细]
  • 本文对元代诗人萨都剌的《酹江月·姑苏台怀古》进行了详尽的翻译和赏析,深入探讨了诗中蕴含的历史情感与文化内涵。 ... [详细]
author-avatar
卡布基诺2502934121
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有