簡體   English   中英

PHP從類函數內部訪問外部$ var

[英]PHP access external $var from within a class function

在PHP中,如何在類的函數中使用外部$ var? 例如,假設$ some_external_var設置為true,您會看到類似

class myclass {
bla ....
bla ....

function myfunction()  {

  if (isset($some_external_var)) do something ...

   } 

}


$some_external_var =true;

$obj = new myclass();
$obj->myfunction();

謝謝

您需要在函數內部使用global關鍵字,以使外部變量對該函數可見。

例如 :

$my_var_2 = 'glop';

function test_2()
{
    global $my_var_2;
    var_dump($my_var_2);  // string 'glop' (length=4)
}

test_2();

您還可以使用$GLOBALS數組,即使在函數內部,該數組也始終可見。


但是,通常不認為使用全局變量是一種好習慣:您的類不應依賴於某種可能或可能不存在的外部事物!

更好的方法是將所需的變量作為參數傳遞給方法本身或類的構造函數...

Global $some_external_var;

function myfunction()  {
  Global $some_external_var;
  if (!empty($some_external_var)) do something ...

   } 

}

但是因為全局是自動設置的,所以請檢查它是否不為空。

那是糟糕的軟件設計。 為了使一個類起作用,需要為其提供數據。 因此,請將該外部var傳遞到您的類中,否則將創建不必要的依賴項。

為什么不只在__construct()期間傳遞此變量,並以該變量的真值為條件使對象在構造期間執行的操作呢?

使用Setters和Getters或集中式配置,例如:

function config()
{
  static $data;

  if(!isset($data))
  {
    $data = new stdClass();
  }

  return $data;
}

class myClass
{
    public function myFunction()
    {
        echo "config()->myConfigVar: " . config()->myConfigVar;
    }
}

並使用它:

config()->myConfigVar = "Hello world";

$myClass = new myClass();
$myClass->myFunction();

http://www.evanbot.com/article/universally-accessible-data-php/24

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM