生成されたディレクトリツリーをたどってディレクトリツリーを生成します
1.
前回のブログを書いていたとき、ファイル構造を表示するためにディレクトリ ツリー構造を使用する必要があったため、すべてのフォルダーとファイルを手動で「走査」する必要がありました。その後、これはエラーが発生しやすく、非常に労力がかかると考えたので、ディレクトリの下にあるファイルとフォルダーを走査し、必要に応じてディレクトリ ツリー構造を使用できるようにディレクトリ ツリーを生成する php スクリプトを作成することを考えました。将来的には、直接実行するだけです。スクリプトによって現在生成されているディレクトリ ツリー構造は、ブラウザを通じて直接表示することも、ダウンロードして txt ファイルを生成することもできます。
2. アイデアの紹介
ディレクトリツリーの生成の考え方は非常にシンプルで、現在のフォルダーの下にある内容をたどって、「.」と「..」に出会ったらそれを再帰的に呼び出して保存します。現在のフォルダーを走査した後、この操作でディレクトリ ツリーを生成し、ディレクトリ ツリーを表示またはダウンロードします。執筆プロセスにはまだ詳細がいくつかありますが、開発まで明らかにされません。理解しやすく拡張しやすいように、関数でできることをクラスにまとめて、フォルダー内を移動するという概念を明確にしました。
3. コードの実装
アイデアを思いついたので、コードを書くのが楽になりました(優れた人はコードを書くときにすぐにコードを書くのではなく、より多くの時間をかけて考えることさえあるとよく言うのはこのためです)。コード:
3.1 ディレクトリツリーの生成
1 /**
2 * ディレクトリツリーを生成する
3 */
4 public function createTree(
$path,
$level=0
){
5 $レベル =
$レベル;
6 $this->tree .=
str_repeat(
$this->options["padding"],
$level)
7 .
$this->オプション["dirpre"
]
8 .
$this->_basename(
$path)
9 .
$this->options["newline"
];
10 $レベル++
;
11 $dirHandle =
opendir(
$path);
12 $files =
array();
13 while (
false !== (
$dir =
readdir(
$dirHandle))) {
14 if(
$dir == "." ||
$dir == ".."
){
15 続ける;
16 }
17 if(!
$this->options["showHide"] &&
substr(
$dir, 0, 1) == "."
){
18 続ける;
19 }
20 $dir =
$path.DIRECTORY_SEPARATOR.
$dir;
21 if(
is_dir(
$dir)){
22 $this->createTree(
$dir,
$level);
23 }
elseif (
is_file(
$dir)){
24 array_push(
$files,
$dir);
25 }
26 }
27 closedir(
$dirHandle);
28 foreach (
$files as $key =>
$value) {
29 $this->tree .=
str_repeat(
$this->options["padding"],
$level)
30 .
$this->オプション["filepre"
]
31 .
$this->_basename(
$value)
32 .
$this->options["newline"
];
33 }
34 戻る $this;
35 }
コードを表示
3.2 ディレクトリツリーの表示
1 /**
2 * ディレクトリツリーを表示
3 */
4 パブリック 関数 showTree(){
5 エコー "
"
<span>6</span> .<span>$this</span>-><span>ツリー
</span><span>7</span> ."
"
;
8 }
コードを表示
3.3 ダウンロードディレクトリツリー
1 /**
2 * ディレクトリツリーファイルをダウンロード
3 */
4 パブリック function downloadTree(
$name){
5 header("Content-type: text/plain"
);
6 header("Content-Disposition:attachment;filename={
$name}.txt"
);
7 エコー $this->
ツリー;
8 }
コードを表示
3.4 テスト中
コードの次の 2 つの端を使用してそれぞれテストします:
1 $t =
new Dirtree(
array("padding"=>" ","newline"=>"
"
));
2 $t->createTree("D:autoload")->showTree("tree");
コードを表示
上記のコードは、図 1 のように、ディレクトリ構造情報をブラウザに出力します。
1 $t = new Dirtree(array("padding"=>" ","newline"=>"rn"));
2 $t->createTree("D:autoload")->downloadTree("tree");
コードを表示
上記のコードが実行されると、ブラウザーはtree.txtファイルをダウンロードします。ファイルを開くための情報が図2に示されています
4.まとめ
ディレクトリツリーを生成する機能は基本的に完成していますが、時間があれば拡張してより使いやすくし、コマンドラインモードをサポートすることもできます。または、フォルダーを折りたためるように出力内容を強化します (js 実装)。
この記事の著作権は著者ifforever(luluyrt@163.com)に帰属します。記事を転載した後は、著者と原文リンクをわかりやすい位置に記載する必要があります。記事ページに記載されていない場合は、法的責任を追及する権利が留保されます。
http://www.bkjia.com/PHPjc/937011.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/937011.html技術記事生成されたディレクトリ ツリーをたどって、ディレクトリ ツリーを生成する 1. はじめに 前回のブログを書いたとき、ファイル構造を表示するためにディレクトリ ツリー構造を使用する必要があったため、すべてのファイルを配置するのはありがたい作業でした...