2017-03-18 52 views
0

我有多個文件,每個文件都有自己的PHP類,並且在一些函數中,在這些類中,我調用另一個類中的函數,這些函數用於構建數組。爲直觀起見,我有如何連接多個類來構建單個數組?

Class 1 - Runs I15_Helper::buildlog('Some text'); 
Class 2 - Runs I15_Helper::buildlog('Some other text'); 
Class 3 - Runs I15_Helper::buildlog('Some more text'); 

類I15_Helper - 有一個名爲buildlog函數用於創建傳遞給它的文本的數組。

解決方案可能很明顯,我只是沒有看到它。下面是我試圖用來構建數組的函數。我想我可以通過將數組存儲在會話中來做到這一點,但我希望有更好的方法來處理這個問題。

public static function buildlog($text, $submitlog = false) { 
if(!is_array($log_array)) { 
     $log_array = array(); 
} 

if($text != "") { 
     array_push($log_array, $text); 
} 

    if($submitlog) { 
     log($log_array); 
    } 
} 
+0

你想創建函數傳遞文本的數組'運行I15_Helper :: buildlog'? –

+0

如果所有調用都要將項目添加到同一個日誌(數組),那麼只需將數組作爲「I15_Helper」中的靜態屬性? –

回答

1

定義static array將幫助您獲得所需的輸出。 定義一個簡單的array將無濟於事,因爲在那之後,當您調用靜態函數buildlog時,您將無法使用$this來引用該數組,因此存在no object is in current context

class I15_Helper 
{ 
    public static $logArray=array(); 
    public static function buildlog($text, $submitlog = false) 
    { 
     if ($text != "") 
     { 
      array_push(self::$logArray, $text); 
     } 

     if ($submitlog) 
     { 
      log($log_array); 
     } 
    } 

} 
I15_Helper::buildlog("sa"); 
I15_Helper::buildlog("sasa"); 
I15_Helper::buildlog("sasasa"); 
print_r(I15_Helper::$logArray); 

OUTPUT:

Array 
(
    [0] => sa 
    [1] => sasa 
    [2] => sasasa 
) 
+0

一個好的答案包括一個解釋,而不僅僅是代碼。 –

+0

@MagnusEriksson謝謝..你是對的。 –

相關問題