外部变量是一种全局变量吗?

Ale*_*lex 6 php variables global global-variables

<?php

$foo = 1;

function meh(){
  // <-- $foo can't be accessed
}
Run Code Online (Sandbox Code Playgroud)

它看起来不像是全局的,但变量在外面的事实是否有像全局的东西一样的缺点?

Gor*_*son 7

是.可以从任何位置访问它们,包括其他脚本.它们稍微好一些,因为您必须使用global关键字从函数中访问它们,这样可以更清楚地了解它们来自何处以及它们的作用.

全局变量的缺点适用,但这并不会立即使它们像某些OO语言中常见的那样变得邪恶.如果他们能够提供一个有效且易于理解的好解决方案,那么你就没事了.实际上有数百万个成功的PHP项目使用这样声明的全局变量.你可以做的最大的错误就是不使用它们,并且当你的代码首先使用它们时,它们会变得更加复杂.:d


小智 7

在任何函数之外定义的所有变量都在全局范围内声明.如果要访问全局变量,您有两种选择:

  1. 使用global关键字

    <?php
    $a = 1;
    $b = 2;
    
    function Sum()
    {
        global $a, $b;
    
        $b = $a + $b;
    }
    ?> 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 或者使用$ GLOBALS

    <?php
    $a = 1;
    $b = 2;
    
    function Sum()
    {
        $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
    } 
    ?>
    
    Run Code Online (Sandbox Code Playgroud)

    更多信息,请访问http://php.net/manual/en/language.variables.scope.php


小智 5

<?php

$foo = 1;

function meh(){
  global $foo;
  // <-- $foo now can be accessed
}

?>
Run Code Online (Sandbox Code Playgroud)