-1

ディレクトリ階層をトラバースしているファイルがあります。サブディレクトリは、従業員の ID によって名前が付けられます。ID の代わりに名前を出力できるように、従業員の名前を取得するために従業員クラスをインスタンス化しました。

エラー「致命的なエラー: オブジェクト以外のメンバー関数を呼び出しますが、理由がわかりません。

var_dump() を使用してオブジェクトをダンプし、すべてを確認できます。それぞれ 4 つのファイルを含むサブディレクトリは 3 つだけです。

以下は私のコードです:

             <div id="empDir1" style="padding-left:20px; padding-bottom:25px;">
              <?php
                  $dirPath = "emp_files";
                  function fileManager( $dir ) {

                  $dirParts = explode("/", $dir);
                  $dirId = $dirParts[1];

                  if ( !isset( $dirId ) ){
                      echo "<div></div>";
                  } else {

                  $employeeId = $dirId;
                  $employee = Employee::getEmployee( $employeeId );

                  $emp_lastname = $employee->getValueEncoded('emp_lastname');
                  $emp_firstname = $employee->getValueEncoded('emp_firstname');

                  $dirListing = $emp_lastname . ', ' . $emp_firstname;
                  }

                    echo "<h2>File Listing for $dirListing ...</h2>";
                      if ( !( $handle = opendir( $dir ) ) ) die( "Cannot open $dir." );

                    $fileImage = array(
                        'doc' => '../../images/folder-doc.png',
                        'txt' => '../../images/folder-txt.png',
                        'msg' => '../../images/folder-msg.png',
                        'pdf' => '../../images/folder-pdf.png',
                        'png' => '../../images/folder-png.png',
                        'jpg' => '../../images/folder-jpg.png',
                        'bmp' => '../../images/folder-bmp.png',
                        'gif' => '../../images/folder-gif.png',
                        'xls' => '../../images/folder-xls.png',

                        );


                    $files = array();

                    while ( $file = readdir( $handle ) ) {
                      if ( $file != "." && $file != ".." ) {
                        if ( is_dir( $dir . "/" . $file ) ) $file .= "/";
                        $files[] = $file;
                      }
                    }

                    sort( $files );
                      echo '<table>';
                      foreach ( $files as $file ) {
                        $fileParts = explode('.', $file);
                        $fileExt = strtolower($fileParts[count($fileParts) -1]);
                        echo '<tr>';
                        echo '<td width="650px" class="row2">';
                        echo ("<a class='ptext' href=" . $dir . "/" . $file . ">" . ( isset($fileImage[$fileExt] ) ? "<img src='". $fileImage[$fileExt] . "' />" : "<img src='../../images/folder-unknown.png' />" ) . " $file</a><a style='float:right;padding-right:10px;' href='empUnlink.php?filePath=" . $dir . $file ."' id='" . $dir . $file ."' class='deleteFile'>x</a></p>"); 
                        echo '</td>';
                        echo '</tr>';
                      }
                      echo '</table>';

                    foreach ( $files as $file ) {
                      if ( substr( $file, -1 )  == "/" ) fileManager( "$dir/" . substr( $file, 0, -1 ) );
                    }


                    closedir( $handle );
                  }

                  fileManager( $dirPath );
              ?>
4

1 に答える 1

1

クラス のコードが何であるかを知らなくてもEmployee、私の推測では、静的関数Employee::getEmployee()は に一致する従業員を見つけられず、$employeeidnull を返します。$employee使用する前に null でないことを確認してください。

于 2012-10-29T20:56:27.880 に答える