插件窝 干货文章 php全局变量都有哪些

php全局变量都有哪些

变量 variable 包含 函数 39    来源:    2025-03-18

在PHP中,全局变量是指在脚本的任何地方都可以访问的变量。PHP中有几种类型的全局变量,主要包括以下几种:

  1. 超全局变量(Superglobals): 这些变量在PHP脚本的任何地方都可以访问,无需使用global关键字。它们包括:

    • $GLOBALS:包含全局作用域中的所有变量。
    • $_SERVER:包含服务器和执行环境的信息。
    • $_GET:包含通过URL参数传递的变量。
    • $_POST:包含通过HTTP POST方法传递的变量。
    • $_FILES:包含通过HTTP POST方法上传的文件信息。
    • $_COOKIE:包含通过HTTP Cookies传递的变量。
    • $_SESSION:包含会话变量。
    • $_REQUEST:包含$_GET$_POST$_COOKIE的内容。
    • $_ENV:包含环境变量。
  2. 全局变量(Global Variables): 这些变量在函数外部定义,可以在函数内部通过global关键字访问。例如:

    $globalVar = "This is a global variable";
    
    function test() {
       global $globalVar;
       echo $globalVar;
    }
    
    test(); // 输出: This is a global variable
    
  3. 常量(Constants): 常量在脚本的任何地方都可以访问,且一旦定义就不能改变。常量使用define()函数定义,例如:

    define("MY_CONSTANT", "This is a constant");
    
    function test() {
       echo MY_CONSTANT;
    }
    
    test(); // 输出: This is a constant
    
  4. 静态变量(Static Variables): 静态变量在函数内部定义,但在函数调用之间保持其值。它们的作用域仅限于定义它们的函数,但它们的值在函数调用之间保持不变。例如:

    function test() {
       static $staticVar = 0;
       $staticVar++;
       echo $staticVar;
    }
    
    test(); // 输出: 1
    test(); // 输出: 2
    test(); // 输出: 3
    
  5. 类属性(Class Properties): 类属性可以在类的任何方法中访问,如果它们是publicprotected的,也可以在类的外部访问。例如:

    class MyClass {
       public $publicVar = "This is a public variable";
       protected $protectedVar = "This is a protected variable";
       private $privateVar = "This is a private variable";
    
       public function test() {
           echo $this->publicVar;
           echo $this->protectedVar;
           echo $this->privateVar;
       }
    }
    
    $obj = new MyClass();
    $obj->test(); // 输出: This is a public variable This is a protected variable This is a private variable
    echo $obj->publicVar; // 输出: This is a public variable
    // echo $obj->protectedVar; // 错误: 无法访问受保护的属性
    // echo $obj->privateVar; // 错误: 无法访问私有属性
    

这些是PHP中主要的全局变量类型。每种类型都有其特定的用途和作用域规则。