この記事では、PHP がドメイン名を基準とした現在のディレクトリを取得する方法の例について説明します。皆さんの参考に共有してください。詳細は以下の通りです
http://127.0.0.1/dev/classd/index.php/download
例えばこのアドレスの場合、baseurlというサイト内リンクを生成するために赤い部分のアドレスを取得したいとします。
$_SERVER['SCRIPT_NAME'] を使用します。 $_SERVER['SCRIPT_NAME'] は、現在アクセスされている PHP ファイルの相対パスです:
$_SERVER['SCRIPT_NAME'] からディレクトリ部分を取得し、dirname 関数で考えられるバックスラッシュの問題を置き換えます
コードは次のとおりです:
$baseUrl = str_replace('\','/',dirname($_SERVER['SCRIPT_NAME']));
空の場合に使用できる通常の値を返すことが保証されています
コードは次のとおりです:
$baseUrl = empty($baseUrl) ? '/' : '/'.trim($baseUrl,'/').'/';
このようにすると、/dev/classd/のディレクトリアドレスが正常に取得できます。
ところで、Zend FrameworkのbaseUrl()関数を見てみると、同じ関数にたくさんのコードが使われていることがわかりませんでした。 $_SERVER それらを大量に取得し、中間の 2 つまたは 3 つのクラスの後、最終的に 4 つまたは 5 つのメソッドが直接呼び出されました。現在の PHP ファイルを取得する中間の 3 行を除き、残りは役に立ちません。意味のない処理が実行されます。すでに十分に遅いです。これは何を意味しますか?興味のある友達は調べてみてください。
この記事が皆様の PHP プログラミング設計に役立つことを願っています。