PHP_PHP チュートリアルに含まれる require() ファイルの正しい使用法について知っておくべきこと

WBOY
リリース: 2016-07-13 10:36:41
オリジナル
956 人が閲覧しました

過去にいくつかの PHP フレームワークのソース コードを見たとき、ファイルがインクルードされるときにファイル パスを結合するために dirname(__FILE__) が使用されていることが奇妙でした。そうすることの利点がわかりませんでした。しかし、ついにその理由が分かりました。

簡単な例を見てみましょう:

php ファイルは a、b、c の 3 つあります。 a.php は Web サイトのルート ディレクトリにあり、b.php は b フォルダー (b/b.php) にあり、c.php は c フォルダー (c/c.php) にあります。何かの混乱?写真を見れば一目瞭然です

a.php と b.php には両方とも c.php が含まれており、最後に c.php には d フォルダー (d/d.php) に php ファイルが含まれています。

まず a.php を見てみましょう:

リーリー

これは非常に単純なコードです。印刷後、c/c.php を確認する必要があります。 リーリー

「これは c.php です。a.php で必要です」という出力を印刷します。$file_name は a.php で定義された変数です。最後にd.phpがインクルードされます。 dフォルダは現在のc.phpファイルの一つ上にあるので、常識的には当然パスは「../d/d.php」と書きます。ただし、残念ながらエラーが報告されます。その理由は、c.php などのインクルード ファイルに他のファイルをインクルードする場合、そのパスは最も外側の親ファイル、つまり a.php を基準とした相対パスになり、あなたが私にインクルードされていると理解できるからです。 , だから、あなたは私を頼らなければなりません。非常に謎に思えますが、原理は実際には非常に単純です。require('c/c.php'); を c/c.php ファイル内のコードとして考えることができ、a.php は次のようになります。 :

リーリー

この時点で、d/d.php ファイルをインクルードしたいときのパスが間違っていることがわかりますか?ここでは a.php コード内にいるため、a.php ファイルに対する相対パスになります。もちろん、パスは require('d/d.php'); である必要があります。コードを次のように変更します:

リーリー

この時点ではまだ意味を理解していないので、b/b.php を見てみましょう:

リーリー

説明の必要はありませんが、問題はありませんが、require('../c/c.php'); を c/c.php のコードに置き換えると問題が発生します。注意してください。 c/c.php のコードを変更し、require('../d/d.php'); を require('d/d.php') に変更しました。以下のコードを見てください。 リーリー

つまり、b/b.php と比較すると、require('d/d.php'); のパスは間違っており、require('../d/d.php'); である必要があります。戻って c/c.php の require パスを変更すると、b/b.php は正常に実行できるが、a/a.php は c を共有できないというのは本当ですか。 /c? .php、全身に影響します、どうすればいいですか?

この時点で、記事の冒頭で述べた dirname(__FILE__) に戻ります。これは良いことであり、上記の問題を完全に解決できます。これを使用すると、どのファイルにファイルが含まれているか、またそのファイルがどのパスにあるかを気にする必要がなくなります。 dirname(__FILE__) で相対パスを指定できるため、親ファイルのレベルを気にする必要がなくなります。現行ファイル。つまり、c/c.php の require パスを次のように変更する必要があります:

リーリー

ここでは、c/c.php を参照するだけで済みます。それに比べて、d/d.php は上位にあります。このように、基準は 1 つだけです。つまり、あなたが私を含めるか、彼が私を含めるかに関係なく、私は自分自身を基準としてのみ使用し、含めたいファイルは自分自身に対して相対的なものにすぎません。

dirname(__FILE__) が理解できない実践者の方は、Google で検索してください。非常に簡単です。

これで PHP テクノロジーの共有は終了です。ご質問や間違いがございましたら、メッセージを残してください。ちなみに、これは私の最初の標準的な技術ブログ投稿です。最初の記事は水文学、二番目の記事は準技術記事、そして今日はついに技術記事を書きました、Ou Ye。

http://www.bkjia.com/PHPjc/738506.html

tru​​ehttp://www.bkjia.com/PHPjc/738506.html技術記事以前、PHP フレームワークのソース コードをいくつか見たとき、ファイルがインクルードされるときにファイル パスを結合するために dirname(__FILE__) が使用されるのは奇妙でした。そうすることの利点はわかりませんでしたが、そうすることの利点はわかりませんでした。やっと分かりました…
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!