2011-11-20 120 views
0

我有以下幾個函數裏面的函數。當我在Diskspace()函數中調用get_dir_size()時出現錯誤。它不認識它。我究竟做錯了什麼。此代碼用於創建表達式引擎插件。php類調用另一個函數內的函數錯誤

致命錯誤:調用未定義功能get_dir_size()

class DiskSpace 
{ 

    public $return_data = ""; 
    public function Diskspace() 
    { 
     $this->EE =& get_instance(); 

     $dir_name = $_SERVER['DOCUMENT_ROOT']."/userfiles/"; 
     /* 1048576 bytes == 1MB */ 
     $total_size= round((get_dir_size($dir_name)/1048576),2) ; 
     $this->return_data = $total_size; 

    } 

    public function get_dir_size($dir_name){ 
     $dir_size =0; 
     if (is_dir($dir_name)) { 
      if ($dh = opendir($dir_name)) { 
       while (($file = readdir($dh)) !== false) { 
        if($file !="." && $file != ".."){ 
         if(is_file($dir_name."/".$file)){ 
          $dir_size += filesize($dir_name."/".$file); 
         } 
         /* check for any new directory inside this directory */ 
         if(is_dir($dir_name."/".$file)){ 
          $dir_size += get_dir_size($dir_name."/".$file); 
         } 
        } 
       } 
      } 
     } 
     closedir($dh); 
     return $dir_size; 
    } 
} 

回答

2

更改調用get_dir_size($ DIR_NAME)行至: -

$total_size= round(($this->get_dir_size($dir_name)/1048576),2) ; 

有一些更多的問題與這個代碼 這是什麼? $this->EE = & get_instance(); 而且如果執行closedir($dh);時,如果if聲明中沒有執行聲明,則會出現錯誤。

+0

我試過了。我仍然得到同樣的錯誤'未定義函數get_dir_size()'。 – Pinkie

+1

還有另一個get_dir_size ... $ dir_size + = get_dir_size($ dir_name。「/」。$ file); – aurora

+0

@哈拉德啊,所以有。發現得好。 – vascowhite

1

記住當你在對象內部調用對象自己的函數時,使用$ this指針變量。

$total_size= round((get_dir_size($dir_name)/1048576),2) ; 

更改爲

$total_size= round(($this->get_dir_size($dir_name)/1048576),2) ; 

也將是一件好事,如果你告訴我們這行的誤差在發生。也很高興看到完整的錯誤日誌。