2011-01-24 11 views
0

の親を計算するので、相対URIを想定し相対ファイル

../file.ext 

親は次のようになり

../ 

または

../../file.ext 

その最初の場合、親は何ですか

../ 

それは第2のものです。仮想のgetParentメソッドを繰り返し呼び出すと、潜在的に無限のサイクルが終了しますか?

/you/are/file.ext 

../../file.extgetParent()機能を考えると

/you/file.ext 

になりますでしょうその後、../file.ext

/you/are/here/ 

の "カレントディレクトリ" を考える

+0

私は混乱しています。 getParent()への再帰呼び出しは、文字列が空であるか、それに "/"がないときに停止する必要があります...私はあなたを正しく理解していますが、私は少し混乱していますあなたの質問はまさにです。 :) – Teekin

答えて

1

、それはする必要があるだろうファイルシステムのトップレベルに達すると停止します。これは、inode番号...を調べることで簡単に確認できます。一致すれば、あなたはツリーの一番上にいます。定義上、ツリーの上部にある '..'を実行すると、ツリーの上部が再び返されます。

+0

ありがとうMarc!私は木の上で..確かではなかった。 – VLostBoy

+0

ボーナスポイント - 空の文字列で構成されたURIの親(これは有効なURIの参照:http://en.wikipedia.org/wiki/Uniform_Resource_Identifier)が適切かどうかを教えてください。/'?これは純粋に構文的な質問です。 – VLostBoy

+0

Apacheの非常に古いバージョンでは、URLに十分な "../../ .."を指定してWebルートから抜け出し、ファイルシステムの周りを動かすことができるという問題がありました。しかし、それはずっと前に閉じ込められていた。さて、Webrootに到達すると、 '../'を実行するとnull演算が行われ、ApacheはWebrootの上部をファイルシステムの上部と同じように扱います。 'example.com/?a = b'に何も問題はありません。ウェブルートにあるデフォルトのドキュメント(index.html/index.phpなど)を使用します。 –