关于php的成员变量和全局变量

其实php中是没有成员变量一说的,比如

$value = 1;function test1() {    echo $value;}

这样写是会报错的,会说你没有define $value;

所以这种情况你需要将变量作为函数参数如下:

function test1($value) {    echo $value;}

php中的全局变量是global定义下的全局变量,是真正的属于当前页面,或者当前文件都能使用的比如:

$fileUplaod='test';function create() {   global $fileUpload;   echo $fileUpload;}

或者

global $fileupload;$fileupload = 22;function create() {   echo $fileupload;}

这样也是可以的,对于一些基本类型的变量可以使用这种全局变量,但是对于像一些数据库连接等对象或者变量,并不推荐使用全局变量理由如下:

下面是三个很好的理由:

1、  代码重用几乎是不可能的

如果一个函数依赖于全局变量,那么想在不同的环境中使用这个函数几乎是不可能的。另外一个问题就是你不能提取出这个函数,然后在其他的代码中使用。

2、  调试并解决问题是非常困难的

跟踪一个全局变量比跟踪一个非全局变量困难的多。一个全局变量可能会在一些不明显的包含文件中被重新定义,即使你有一个非常好的程序编辑器(或者IDE)来帮助你,你也得花了几个小时才能发现这个问题所在。

3、  理解这些代码将是非常难的事情

你很难弄清楚一个全局变量是从哪里来得,它是用来做什么的。在开发的过程中,你可能会知道知道每一个全局变量,但大概一年之后,你可能会忘记其中至少一般的全局变量,这个时候你会为自己使用那么多全局变量而懊悔不已。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

1 条评论
登录 后参与评论

相关文章

来自专栏逆向技术

C++反汇编第六讲,认识C++中的Try catch语法,以及在反汇编中还原

      C++反汇编第六讲,认识C++中的Try catch语法,以及在反汇编中还原 我们以前讲SEH异常处理的时候已经说过了,C++中的Try catch...

20110
来自专栏农夫安全

浅析XSS的几种测试方法

0x00 背景 最近看到一个好玩的xss社区,准备通过几个经典的关卡来剖析一下XSS,本文仅提供经典案例。 试玩链接:http://tr.secevery...

2908
来自专栏沈唁志

提高PHP编程效率的53个要点

1686
来自专栏窗户

深入设计电子计算器(一)——CPU框架及指令集设计

前几天写了一篇《如何设计一个电子计算器》,一个朋友看了之后说实在太low,好吧,依照他的意思,那我就采用文中FPGA设计的方式,然后自己从指令集设计、cpu设...

1746
来自专栏web前端教室

ReactJs的虚拟dom是个啥情况?

这个周末的先行者课程要讲React的一些东西,所以今天写一些React的内容。 话说前端操作中最消耗资源的是啥?如果我说dom操作,那应该没有人会反对吧。 在以...

1865
来自专栏desperate633

浅谈web开发中的Get和Post方法get和post的区别

在http协议中,实际上有八个http方法。但在实际开发中,绝大多数情况我们只会用到两个方法,就是get和post。所以我们来稍微谈谈两种方法的区别,以及何时应...

832
来自专栏鸿的学习笔记

Python写的Python解释器(一)

导论 Byterun是一个用Python实现的Python解释器。它的结构类似于CPython(Python的主流实现方式)。

582
来自专栏开源优测

python selenium2示例 - 同步机制

前言 在使用python selenium2进行自动化测试实践的过程中,经常会遇到元素定位不到,弹出框定位不到等等各种定位不到的情况,在大多数的情况下,无非是以...

2704
来自专栏瓜大三哥

UVM(十)之config机制

UVM(十)之config机制 1 验证平台中要配置的众多的参数 在一个验证平台中,有众多的参数需要配置。如在mac_driver中,按照以太网相关协议的规定,...

2346
来自专栏FreeBuf

pwnable.tw刷题之dubblesort

前言 上一篇中我介绍了phttp://www.freebuf.com/articles/others-articles/134271.htmlwnable.tw...

2706

扫码关注云+社区