2011-12-06 91 views
2

我想知道是否有一種方法可以訪問PHP中其他文件中定義的變量。在其他文件中定義的訪問變量

例子:

file_01.php

<?php 
    $a = 42; 
?> 

file_02.php

<?php 
    require_once('file_01.php'); 

    class mnyClass 
    { 
     private $myVar; 

     function __construct($var = $a) 
     { 
      $this->myVar = $var; 
     } 

     function getVar() 
     { 
      return $this->var; 
     } 

     function setVar($var) 
     { 
      $this->myVar = $var; 
     } 
    } 
?> 

很顯然,我的課是比較複雜的。我選擇了這個例子來更好地理解我試圖做的事情;)

在此先感謝您。

+0

首先,我感謝大家的答覆。的確,我想設置應用程序默認值,但是使用關聯數組。 'define()'方法不會將數組作爲參數。我知道'$ GLOBALS'變量,但它不能在構造函數參數中使用:/所以,我退出在我的構造函數中使用$ GLOBALS,並在參數上使用NULL測試。出於好奇, –

回答

3

不能做到這一點:

function __construct($var = $a) 
    { 
     $this->myVar = $var; 
    } 

你可以做的是通過它:

<?php 
    require_once('file_01.php'); 
    $mnyClass = new mnyClass($a);// the torch has been passed! 

    class mnyClass 
    { 
     private $myVar; 

     function __construct($var = null) 
     { 
      $this->myVar = $var; 
     } 

     function getVar() 
     { 
      return $this->var; 
     } 

     function setVar($var) 
     { 
      $this->myVar = $var; 
     } 
    } 
?> 

OR可以做到這一點(這是建議):

function __construct($var = null) 
    { 
     if($var === null) $var = $GLOBALS['a']; //use global $a variable 
     $this->myVar = $var; 
    } 
+0

,爲什麼不可取? – Frank

+1

@Frank你不能範圍全局變量。 – Neal

1

這聽起來像你設置一些應用程序的默認值。它可能是有意義的定義這些常量:

file_01.php:

define('DEFAULT_VALUE_FOR_A', 42); 

file_02.php

class myClass 
{ 
    function __construct($var = DEFAULT_VALUE_FOR_A) { 
    } 
} 
0

最後,我用這個方法:

<?php 

require_once('file_01.php'); 

class myClass { 

    private $myVar; 

    function __construct($var = NULL) 
    { 
     global $a; 

     if($var == NULL) 
      $this->myVar = $a; 
     else 
      $this->myVar = $var; 
    } 
} 

?> 

我在構造函數中聲明我的變量$a爲全局變量,設置我的默認值$varNULL並檢查構造函數是否使用參數(s)($ var == NULL)調用。