我有以下类,内部函数很少。当我在get_dir_size()
函数中调用Diskspace()
时,我收到错误。它没有认识到它。我究竟做错了什么。此代码用于创建expressionengine插件。
致命错误:调用未定义的函数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;
}
}
答案 0 :(得分:2)
将调用get_dir_size($ dir_name)的行更改为: -
$total_size= round(($this->get_dir_size($dir_name) / 1048576),2) ;
此代码还有一些问题
这是什么 ? $this->EE = & get_instance();
如果closedir($dh);
如果声明它的if
语句没有被执行,你也会遇到错误。
答案 1 :(得分:1)
请记住,当您在对象内部调用对象自己的函数时,请使用$ this指针变量。
$total_size= round((get_dir_size($dir_name) / 1048576),2) ;
更改为
$total_size= round(($this->get_dir_size($dir_name) / 1048576),2) ;
如果你告诉我们错误发生在哪一行,也会很好。也很高兴看到完整的错误日志。