2011-11-20 4 views
0

내부에 함수가 적은 다음 클래스가 있습니다. Diskspace() 함수 내에서 get_dir_size()을 호출하면 오류가 발생합니다. 그것은 그것을 인식하지 못합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까. 이 코드는 expressionengine 플러그인을 작성하기위한 것입니다.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(); 또한 선언 된 if 문이 실행되지 않으면 closedir($dh);을 실행하면 오류가 발생합니다.

+0

나는 그것을 시도했다. 나는 여전히'undefined function get_dir_size()'와 같은 에러를 얻고있다. – Pinkie

+1

거기에 다른 get_dir_size가 있습니다 ... $ dir_size + = get_dir_size ($ dir_name. "/". $ file); – aurora

+0

@harald 아, 그렇습니다. 잘 발견했다. – vascowhite

1

개체 내부에서 개체 자체의 함수를 호출 할 때 $ this 포인터 변수를 사용하십시오. 오류가에서 일어나고있는 줄을하는 우리에게 말했다 경우

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

변경

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

로도 좋은 것입니다. 전체 오류 로그를 확인하는 것도 좋을 것입니다.

관련 문제