鍍金池/ 問答/PHP  網(wǎng)絡(luò)安全/ PHP 變量作用域的問題

PHP 變量作用域的問題

PHP 在類外定義變量,有哪些好的方法能使類中所有函數(shù)都能訪問?(若是匿名函數(shù)請詳細(xì)舉例),謝謝!

回答
編輯回答
不舍棄
2018年8月11日 01:19
編輯回答
旖襯

三個方法:

  • 利用預(yù)定義變量 $GLOBALS

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

    參考:$GLOBALS

  • 利用 global 關(guān)鍵字

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

    參考:global 關(guān)鍵字

  • 利用 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 數(shù)組。

2017年6月13日 20:25
編輯回答
墨染殤

那還不簡單,你在外面定義一個變量直接通過構(gòu)造函數(shù)傳入給類內(nèi)的屬性不就全部可以訪問到了嘛

2018年7月11日 07:40
編輯回答
艷骨
$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();
2018年6月15日 17:45