购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4 变量作用域实践

我们知道,在PHP中定义一个变量后,在脚本任意位置都可以存取访问,这被称为“全局变量”,而定义在函数或类的方法中的变量只可以在函数内部访问,这叫作“局部变量”。

使用局部变量可以使源代码易于管理,试想如果所有的变量都是全局的,任何位置都可访问、修改它的内容,如果变量重名就可能发生“污染”。通过声明局部变量来限制一个变量的存取范围,可以让代码模块化,易调试,让应用运行更健壮。

下面我们就来看看如何使用全局变量和局部变量,如代码清单1-1所示:

代码清单1-1 使用全局变量与局部变量


<php
$globalName = "老杜"
function getvar() {
    $localName = "Raymond"
    echo"Hello $localName<br>"
}
getvar();
echo "The value of \$globalName is '$globalName'<br />"
echo "The value of \$localName is '$localName'<br />"
   >

该脚本运行后将显示如下内容:


Hello
   老杜! 
The value of $globalName is 'Raymond'
The value of $localName is '' 

在上面的代码中,我们一共创建了两个变量:其中$globalName是全局变量,它没有在任何函数体里;另一个是名为$localName的局部变量,是在sayHello()函数里内部定义的。

程序运行时先是调用sayHello()函数,显示的是“hello,Raymond!”,接下来用echo显示两个变量,分别是$globalName和$localName。由于$globalName是定义在函数之外的全局变量,在脚本任何位置都可以访问,因此显示为“Raymond”。而$localName定义在sayHello()函数内部,只能在函数内访问。脚本中使用echo来访问这个局部变量,而PHP不允许外部访问此局部变量。因此运行时,PHP认为程序要创建一个新的全局变量$localName,并将默认值初始化为空,所以显示的时候是空白的。

PHP允许函数内部可访问外部全局变量,只需在函数中使用global关键字即可。我们来看代码清单1-2:

代码清单1-2 使用全局变量与局部变量


<php
$globalName = "老杜"
function sayHello() {
    $localName = "Harry" 
    echo "Hello $localName<br />"
    global $globalName
    echo "Hello $globalName<br />"
}
sayHello();
   >

该段脚本会输出下面的内容:


Hello Harry
Hello
   老杜!
  

由于在sayHello()函数里使用了global来声明$globalname为全局性质,因此它的内容被打印了出来。 ZvMJmcJvruMEraFiuIgPyI9VdYEVhFrzUUWpMS0gHiNoENB06sjucPEIQtMBvaAu

点击中间区域
呼出菜单
上一章
目录
下一章
×