Что такое baseUrl

Я потратил некоторое время, пытаясь понять, что такое baseUrl(из изучения Zend Framework), но удивительно, что для такой вездесущей утилиты ни один "эксперт" или блоггер даже не попытался определить baseUrl, чтобы у ученика было представление о том, что это такое. Все они предполагают, что вы знаете, что это такое, и затем продолжают выводить его, каждый из них использует свой собственный метод, чтобы прийти к своему собственному результату. Из того, что я прочел до сих пор:--7-->

некоторые думают, что это домашняя страница-Url, которая то, что я, естественно, думаю, это(как подразумевается из имени), доступ к $_SERVER["HTTP_HOST"] или $_SERVER["SERVER_NAME"] но удивительно, что они, похоже, в меньшинстве.

некоторые думают, что это текущая страница, доступ к которой $_SERVER["REQUEST_URI"] или $_SERVER["PHP_SELF"] добавлено к имени сервера

в то время как другие думают, что это может быть любой из вышеперечисленных или любой url-адрес(ну, по крайней мере, это впечатление, которое я получаю), в зависимости от того, как пользователь хочет его использовать.

так кто-нибудь может объяснить, что baseUrl, не предполагая, что я также "Эксперт" и почему мне это может понадобиться. Спасибо.

EDIT: baseUrl должен быть автоматически установлен на большинстве проектов Zend, но, по-видимому, не в моем случае. Даже когда я делаю echo $this->baseUrl() или var_dump($this->baseUrl()), Я ничего не получу. Так что я понятия не имею, о чем эта утилита.

2 ответов


короткий ответ на то, почему вам нужно иметь baseUrl() объект это:

где развернуто приложение должно быть проблемой конфигурации, а не основной проблемой функциональности приложения

во многих-возможно, даже в большинстве случаев базовый url-адрес приложения будет просто $_SERVER['HTTP_HOST'] или $_SERVER['SERVER_NAME'].

но это не всегда так.

самый простой пример для рассмотрения-стандартный веб-сайт с обычным страницы:

  • http://example.com/
  • http://example.com/contact
  • http://example.com/about
  • // etc

теперь вы пишете (или покупаете или загружаете как пакет OSS) приложение блога, которое вы хотели бы развернуть по url:

http://example.com/blog

блог может иметь ссылки типа:

  • http://example.com/blog/post/my-post-slug
  • http://example.com/blog/categories/some-category
  • //etc

все эти ссылки находятся под /blog.

само приложение блога должно быть обеспокоено только со ссылками / страницами / маршрутизацией внутри блога. Хотя ваши шаблоны блогов могут очень хорошо содержать ссылки верхнего / нижнего колонтитула на остальную часть сайта, остальная часть основной функциональности приложения блога не должна знать об остальной части вашего сайта. Каким-то образом приложение блога должно знать, что когда он генерирует ссылки на сообщения в блоге и категории блога и все его другие связанные с блогом страницы, все они должны иметь префикс http://example.com/blog.

значения $_SERVER['HTTP_HOST'] или $_SERVER['SERVER_NAME'] не отражать эту информацию о среде/развертывании. Настройка (!) приложение с базовым значением url и последовательно использует какой-то baseUrl() функция (которая потребляет эту конфигурацию) при создании ссылок-хороший способ сохранить основную функциональность приложения, ориентированную на собственный бизнес, а не на внешние факторы развертывания.


ваш веб-сайт состоит из ряда веб-страниц. Каждая веб-страница имеет полный Единый локатор ресурсов (URL) что-то вродеhttp://www.your.com/intro.htm. URL-адреса веб-страниц обычно начинаются с одного и того же набора букв, напримерhttp://www.your.com/ в этом случае. Этот общий префикс-это то, что мы называем вашим базовым URL.

использование базовых URL-адресов упрощает вашу работу, поскольку вам не нужно видеть или вводить полный URL-адрес для каждой страницы, на которую вы хотите ссылаться к.

или

URL-адрес, назначенный странице для преобразования "относительных URL-адресов" в "абсолютные URL-адреса" путем добавления имени документа или конечной косой черты /

чтобы понять Zend url, пожалуйста, обратитесь к этому ссылке