PHP 变量作用域的问题

PHP 在类外定义变量,有哪些好的方法能使类中所有函数都能访问?(若是匿名函数请详细举例),谢谢!

阅读 3.5k
4 个回答

三个方法:

  • 利用预定义变量 $GLOBALS

    $var_g = '';
    
    class A
    {
        public function foo()
        {
            $var = $GLOBALS['var_g'];
        }
    }

    参考:$GLOBALS

  • 利用 global 关键字

    <?php
    $a = 1;
    $b = 2;
    
    function Sum()
    {
        global $a, $b;
    
        $b = $a + $b;
    }
    
    Sum();
    echo $b; // 输出 3

    参考:global 关键字

  • 利用 set/get 方法

    $var_g = 'g';
    
    class A
    {
        private $var_g;
        public function __construct(&$var)
        {
            $this->var_g = $var_g;
        }
        
        public function foo()
        {
            echo $this->var_g;
        }
    }
    
    $obj = new A($var_g);
    $obj->foo(); // 输出 g

推荐 $GLOBALS 数组。

$a = 1;
class b {
    private $a = null;
    public function setA($a) {
        $this->a = $a;
    }
    public function useA() {
        echo $this->a;
    }
}
$_b = new b;
$_b->setA($a);
$_b->useA();

那还不简单,你在外面定义一个变量直接通过构造函数传入给类内的属性不就全部可以访问到了嘛

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题