私のapache www dirには、私が取り組んでいる個人的なプロジェクトのサブディレクトリがあります。例:私はそれは今重要ではありませんポート81によ、なぜasp.netのResolveUrlに相当するPHP
www /ののwebapp1 WWW/webapp2を
私はhttp://localhost:81/webApp2
によってwebapp2をへのアクセスを(私は現在、ポータブルWAMPを実行し、それはです... )
私はここで仮想ホストを使用していません、おそらく私はすべきですが、それについてはあまりよく分かりません。私は、URLを「解決」するために、任意のPHPファイルからこのメソッドを呼び出すことができます
function BaseUrl()
{
$baseDir = dirname(dirname(__FILE__));
$pos = strrpos($baseDir, '\\');
if (!$pos)
{
$pos = strrpos($baseDir, '/');
}
$theDir = substr ($baseDir, $pos + 1);
if ($theDir == 'public_html')
{
$theDir = '~johnny5'; //Hmmmmm...
}
return 'http://'.$_SERVER["HTTP_HOST"].'/'.$theDir;
}
:
は、だから私のwebbApp2のために、私は次の関数を使用してファイルutil/files.php
を持っています。
require_once("util/files.php");
$myUrl = BaseUrl().'/someFolderAtTheRootOfWebApp2/myfile.css';
$css = $baseUrl.'/css/tab.css';
次に、$css
は"http://localhost:81/webApp2/someFolderAtTheRootOfWebApp2/myfile.css"
です。そのようにして、例えば私のCSSやjavascriptファイルへのリンクを動的に生成することができます。
asp.Netでは、string url = Page.ResolveUrl ("~/folder/file.css");
と書いています。
これは機能しますが、これを行うもっとエレガントな方法があるのだろうかと思います。たぶん、それを処理するためにPHPに組み込みのものがあります。さらに重要なのは、Linuxボックスの下でアプリケーションを実行すると、public_html
のパッチが私のuserdirを処理することが分かります。それは本当に移植性がありません。
提案がありますか?
私は自分の質問を編集して機能の結果を示しました。私がしたいのは、asp.netの 'Page.ResolveUrl("〜/ somefolder/somefile.css ")'や 'Page.ResolveClientUrl("〜/ somefolder/somefile.css ")の動作です。 – Johnny5