Эквивалент ResolveUrl asp.net в php - PullRequest
       34

Эквивалент ResolveUrl asp.net в php

2 голосов
/ 12 августа 2011

В моем apache www dir у меня есть подкаталог для различных личных проектов, над которыми я работаю. Пример:

WWW / webApp1 WWW / webapp2

Я получаю доступ к webApp2 по http://localhost:81/webApp2 (Я сейчас использую портативный wamp, поэтому я на порте 81. Это сейчас не имеет значения ...)

Я не использую виртуальный хост здесь, может, мне стоит, но я мало что знаю об этом.

Итак, для моего webbApp2 у меня есть файл util/files.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;
}

Я могу вызвать этот метод из любого php-файла, чтобы «разрешить» URL.

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, чтобы справиться с этим. И что еще более важно, вы можете увидеть патч с public_html для обработки моего userdir, когда я запускаю приложение под моей Linux-системой. Это не совсем переносимо.

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2012

Это хорошая идея использовать в этом случае ini_set и ini_get?

ini_set('include_class_path', 'http://'.$_SERVER["HTTP_HOST"]."/Project/lib/");
ini_set('include_controls_path', 'http://'.$_SERVER["HTTP_HOST"].'Project/controls/');
echo $get = ini_get('include_class_path');
0 голосов
/ 12 августа 2011

Что именно вы хотите сделать?Получить абсолютный URL для файла?Если это так, вы должны сделать логику самостоятельно - так как php на самом деле не интегрирован в apache, он не имеет представления о структуре вашего сервера.

...