php - 属性在方法1中设置后在方法2中为空

标签 php methods

希望您能帮我解决这个问题!

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_listBuildCurrentDirectoryList 不返回任何内容。该函数只有副作用,没有返回值。

删除赋值,使构造函数看起来像这样,您应该可以开始了:

$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/

相关文章:

java - 如何在不重置参数值的情况下引用构造函数

带有 throw(...) 的 C++ 方法声明

ios - 什么可以称为模块化任务的示例?

Java 变量在类中的不同方法中不可用 - 新手

PHP $_POST 不通过 h​​tml 表单保存在 mysql 上

ruby-on-rails - 在另一个Rails中使用 Controller 中的方法

php - 设置Yii2的预览

php mysql查询连接两个表

php - 使用 PHP 读取 cookie

php - 检查另一个表的字段状态 Eloquent