очень сильно зависит от архитектуры сайта, а именно о том, как ваш обрабатывается шаблон. Вы можете использовать $URL_HOME
, но если в шаблоне/другом контексте вывода есть неглобальная область, это некрасиво.
Для простого решения, определить константу и использовать функцию для генерации адреса:
const URL_HOME = 'http://example.net/';
function make_url($rel_url)
{
return URL_HOME . $rel_url . '.php';
}
//...
echo make_url('distribution/getit');
Здесь мы добавляем в .php
в-функции, а также, вызов функции просто с 'distribution/getit'
. Это упростит дальнейший модификацию вашего URL-формата (например, переключение на URL-адреса расширения .html,/URL-адреса/стиль и/или работу с переписанием строки запроса и т. Д.). Затем вы можете настроить все URL-адреса в одном месте, а не объединять базовый URL и т. Д. В нескольких местах вашего кода.
на одну ступень вверх, вы можете написать класс/метод (ы) для обработки ваших URL-адресов и определить базовый URL и т.д. в его свойствах. Затем у вас также может быть несколько методов обработки разных URL-адресов или форматов URL. Вот основной пример. Во-первых со статическим использованием, в случае, если вы хотите, чтобы держать вещи коротким и не заботятся, чтобы создавать новые экземпляры в каждой области:
class Urls
{
public static $base = 'http://example.net/';
public static $ext = '.php';
public static function make($rel_url)
{
return $this->$base . $rel_url . $this->$ext;
}
}
echo Urls::make('distribution/getit');
// ... http://example.net/distribution/getit.php
Urls::$base = 'http://sub.example.net/';
Urls::$ext = '.html';
echo Urls::make('distribution/getit');
// ... http://sub.example.net/distribution/getit.html
Если вы уронили статический режим и создать экземпляр объекта, однако, вы можете назвать его внутри строки тоже:
class Urls
{
public $base = 'http://example.net/';
public $ext = '.php';
public function make($rel_url)
{
return $this->base . $rel_url . $this->ext;
}
}
$urly = new Urls();
echo "See here, {$urly->make('distribution/getit')}, the link!";
в противном случае, если вы буферные ваш HTML, вместо того, вторя его сразу, вы можете также использовать маркеры, например, { base_url }distribution/getit.php
, и запустите перед ним str_replace('{ base_url }', 'http://whatever', $HTML);
. На немного более сложном спине на этом используйте маркер, такой как {% url:distribution/getit %}
, затем запустите в конце код preg_replace_callback
и проведите все сопоставленные маркеры URL в ваш обработчик URL. Хороший способ пойти, если вы используете статические шаблоны HTML. (Разделение кода и презентация - хорошая идея.)
Если ОП изменил формулировку «лучший способ справиться с этим» на «общие способы обращения с этим» или даже «хорошие способы справиться с этим», и сделал «что являются общепринятой практикой кодирования «множественное число», может ли это сделать менее основанной на мнениях? Если оставить комментарий с указателем ревизии, было бы полезно, если бы такой вопрос был закрыт как основанный на мнениях. –