Свойство является нулевым в методе 2 после установки в методе 1 - PullRequest
2 голосов
/ 06 декабря 2011

в надежде помочь мне с этим вопросом!

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'

I 'Я немного новичок в классах / методах ..

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Это неправильно:

$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);
1 голос
/ 06 декабря 2011

В вашем конструкторе вы назначаете directory_list для возврата BuildCurrentDirectoryList, но вы ничего не возвращаете в BuildCurrentDirectoryList, вы назначаете directory_list непосредственно в этом методе.В конце BuildCurrentDirectoryList возвращает NULL.Так что, либо верните каталог directory_list, либо просто не присваивайте его так:

function __construct($current_directory_in){
    $this->BuildCurrentDirectoryList($current_directory_in);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...