0x04 变量/常量
大部分的 PHP 变量只有一个单独的范围,这个范围包含了include 和 require 引入的文件。如果要使一个变量变成全局变量我们可以使用global关键字
<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
?>
在一个函数域内部用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用。这有可能导致预料之外的行为,请谨慎使用
静态变量
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失,
超全局数组(变量)
php中有以下的超全局数组,这些数组一般保存了一些来自php外部的变量,比如post/get传递给php的值还有环境变量等等
- $GLOBALS
- $_SERVER
- $_GET
- $_POST
- $_FILES
- $_COOKIE
- $_SESSION
- $_REQUEST
- $_ENV
关于""双引号中的变量,一般使用{}来给变量名清晰定界
php中还有一些魔术常量
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
__FUNCTION__ 常量返回该函数被定义时的名字
__CLASS__ 常量返回该类被定义时的名字(区分大小写)。
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。
这些魔术常量一般用来定位我们代码的位置关于php变量中的传引用&
php中的传引用
php中的& 引用与c语言里面的函数指针不相同,他不能传递内存地址,只能把两个参数的内存地址绑定在一起
$a = 1;
$b = &$a;
这样$a 和$b共用一个内存地址,改变$a的值和改变$b的值是等价的