$list_of_files
ようになりされます変数を参照すると、$this->list_of_files
となるプロパティと同じではありません。
変数は、関数内で参照されている機能でのみ使用可能です/宣言(グローバル使用しない限り - しかし、これは一般に「悪」とみなされ、避けるべきである)
プロパティは、クラスのすべてのメソッド(から入手できます静的でない限り)、オブジェクトの存続期間中存続します。
<?php
//lets show all error so we can see if anything else is going on..
error_reporting(E_ALL & ~E_NOTICE);
class listOfFiles {
private $list_of_files = [];
function __construct() {
if ($handle = opendir(WEB_STORAGE_DIR)) {
while (false !== ($entry = readdir($handle))) {
$this->list_of_files[$entry] = filesize(WEB_STORAGE_DIR.DIRECTORY_SEPARATOR.$entry);
}
closedir($handle);
// Remove . and .. from the list
unset($this->list_of_files['.']);
unset($this->list_of_files['..']);
}
}
function is_empty() {
return empty($this->list_of_files);
}
}
ディレクトリが存在しないという問題はありますか?開こうとする前にこれをチェックし、またそれが存在しない場合にどうするかを可能にする方が良いでしょうが、あなたは実際にそれを読んカント:私はこれがそのことを確認してくださいと同じように例にerror_reporting(E_ALL & ~E_NOTICE);
を追加した
<?php
//lets show all error so we can see if anything else is going on..
error_reporting(E_ALL & ~E_NOTICE);
class listOfFiles {
private $list_of_files = [];
function __construct() {
if(!is_dir(WEB_STORAGE_DIR)){
throw new Exception("Missing Web Storage Directory");
}
$handle = opendir(WEB_STORAGE_DIR);
if (!$handle) {
throw new Exception("Could not read Web Storage Directory");
}
else{
while (false !== ($entry = readdir($handle))) {
$this->list_of_files[$entry] = filesize(WEB_STORAGE_DIR.DIRECTORY_SEPARATOR.$entry);
}
closedir($handle);
// Remove . and .. from the list
unset($this->list_of_files['.']);
unset($this->list_of_files['..']);
}
}
function is_empty() {
return empty($this->list_of_files);
}
}
エラーが表示され、問題をデバッグするのに役立ちます。これに関する詳しい情報はこちらhttp://php.net/manual/en/function.error-reporting.php
ありがとう、whileループの '$ this-> list_of_files [$ entry]'の設定が失敗すると、オブジェクトのプロパティとして宣言されたプライベート配列は未初期化のままです。 – Ralph
パスが有効であることを確認してください - WEB_STORAGE_DIRはどこから来たのですか?代わりに '__DIR__'を使ってテストしましたが、実行中のファイルのディレクトリを指しています。ここのサンプルコードを見てください。http://pastebin.com/gAAzZSr6 – Theo
whileループでは失敗しますエラーや警告はありますか?ファイルの先頭に 'error_reporting(E_ALL&〜E_NOTICE);を追加して、エラーを確認してください - これに関する詳細はこちら:http://php.net/manual/en/function.error-reporting.php – Theo