2011-12-06 10 views
2

この質問で私を助けてくれることを願っています!このすべての終わりにメソッド1に設定した後、メソッド2でプロパティがnullになる

の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 

が、何でありますshウルド返されることは、これは間違っている

+0

ただ、いくつかのデバッグプリントを吐き出す/それは私がそれをチェックアウトするのvar_dumpを使用してきた間違った – PeeHaa

+0

を行く場所を見つけるためにvardumpsしかし、 'BuildCurrentDirectoryList()'の終わりではすべて正常に見え、 'ReturnCurrentDirectoryList()'では 'null'が吐き出されます。私はそれを削除するために何ができるか、何の手がかりもない。 –

+0

'$ this-> directory_list'プロパティ(construct()内)を、何も返さない関数' BuildCurrentDirectoryList'の返り値で上書きします。 – PeeHaa

答えて

3

私はクラス/メソッドに多少新たなんだ

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); 
+0

パーフェクト!私はそれを見て、とても馬鹿だと感じる。ありがとうございました:) –

+0

戻り値と副作用を持って、各関数の先頭に関数仕様を記述すると、そのようなものが見つけやすいでしょうか? –

1

あなたのコンストラクタでは、あなたがBuildCurrentDirectoryListの復帰にdirectory_list割り当てているが、あなたはBuildCurrentDirectoryListで何も返さないされていませんそのメソッドで直接directory_listを割り当てています。最後に、BuildCurrentDirectoryListはNULLを返します。だから、directory_listを返すのいずれか、または他のちょうどこのようにそれを割り当てない:

function __construct($current_directory_in){ 
    $this->BuildCurrentDirectoryList($current_directory_in); 
} 
+0

パーフェクト!私はそれを見て、とても馬鹿だと感じる。ありがとうございました :) –

関連する問題