2017-02-23 47 views
0

我有下面的代碼陣列在我的課叫lang.php如何從另一個PHP類

<?php $GLOBALS['app_list_strings']['country']=array (
..... 
) 


    ... 
?> 

這些陣列沒有任何函數和類中定義。 我需要在其他控制器類中獲取這些數組值。 (例如,AdminController.php)。如何訪問這些數組值?($GLOBALS['app_list_strings']['country']

+0

有一個你想要學習的類的例子嗎? – Machavity

+0

你使用任何框架? –

+0

我正在使用yii 1框架 – phpdev

回答

1

您可以將其他類注入AdminController類,並設置get方法來獲取所需的數組。想必您已在班級設立像這樣(顯然會有更多的腳本)

class Lang 
    { 
     public function someMethod() 
      { 
       $array = array(
        'app_list_strings'=>array(
         'country'=>array(
          'k1'=>'val1', 
          'k2'=>'v2' 
         ) 
        ) 
       ); 
      } 
    } 

如果添加一個祕密參數和方法,你可以提取該數組:

class Lang 
    { 
     # Create parameter 
     private $array; 
     # Whatever method contains the array 
     public function someMethod() 
      { 
       # use $this here 
       $this->array = array(
        'app_list_strings'=>array(
         'country'=>array(
          'k1'=>'val1', 
          'k2'=>'v2' 
         ) 
        ) 
       ); 
       # I am just returning self for sake of demonstration. 
       return $this; 
      } 
     # Returns the array 
     public function getArray() 
      { 
       return $this->array; 
      } 
    } 

class AdminController 
    { 
     # Inject your other class 
     public function whateverMethod(Lang $lang) 
      { 
       # Retrieve array from getArray() method 
       print_r($lang->someMethod()->getArray()); 
      } 
    } 

要使用方法:

<?php 
$AdminController = new AdminController(); 
$AdminController-> whateverMethod(new Lang()); 

爲了得到陣列只是一般:

<?php 
$Lang = new Lang(); 
print_r($Lang->someMethod()->getArray()); 

如果類遠彼此分離的,因爲它們是從你的腳本不同地區打來電話,他們不能像注射證明,你可以改變private $arrayprivate static $array和分配self::$array = array(...etc.然後返回self::$array。由於它是靜態的,它將通過腳本持續存在。最後的辦法是保存到$_SESSION,但這可能不是最理想的解決方案。