希望您能帮我解决这个问题!
Index.php
include_once 'files.class.php';
$file_object = new FileObject('resources');
$file_object->ReturnCurrentDirectoryList();
files.class.php
class FileObject{
public $directory_list;
function __construct($current_directory_in){
$this->directory_list = $this->BuildCurrentDirectoryList($current_directory_in);
}
function BuildCurrentDirectoryList($current_directory_in){
$i = 0;
$iterator = new DirectoryIterator($current_directory_in);
foreach ($iterator as $fileinfo){
if ($fileinfo->isDir()){
$this->directory_list[$i]['pathname'] = $fileinfo->getPathname();
}elseif($fileinfo->isFile()){
$this->directory_list[$i]['filename'] = $fileinfo->getFilename();
}
$i++;
}
}
function ReturnCurrentDirectoryList(){
var_dump($this->directory_list);
}
}
最后,返回的是
null
但是应该返回的是
array 0 => array 'pathname' => string 'resources\.', 1 => array 'pathname' => string 'resources\..', 2 => array 'pathname' => string 'resources\Images'
我对类/方法有点陌生..
最佳答案
这是错误的:
$this->directory_list = $this->BuildCurrentDirectoryList($current_directory_in);
您分配给 $this->directory_list
但 BuildCurrentDirectoryList
不返回任何内容。该函数只有副作用,没有返回值。
删除赋值,使构造函数看起来像这样,您应该可以开始了:
$this->directory_list = array(); //I like to initialise arrays to the empty array
$this->BuildCurrentDirectoryList($current_directory_in);
关于php - 属性在方法1中设置后在方法2中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8404063/