Введение в Zend Framework

 Learning Zend Framework

appendix

 Zend Framework Reference


  • Zend_Gdata
  • Zend_Http
  • Zend_InfoCard
  • Zend_Json
  • Zend_Layout
  • Zend_Ldap
  • Zend_Loader
  • Zend_Locale
  • Zend_Log
  • Zend_Mail
  • Zend_Markup
  • Zend_Measure
  • Zend_Memory
  • Zend_Mime
  • Zend_Navigation
  • Zend_Oauth
  • Zend_OpenId
  • Zend_Paginator
  • Zend_Pdf
  • Zend_ProgressBar
  • Zend_Queue
  • Zend_Reflection
  • Zend_Registry
  • Zend_Rest

  • Zend_Search_Lucene
  • Zend_Serializer
  • Zend_Server
  • Zend_Service
  • Zend_Session
  • Zend_Soap
  • Zend_Tag
  • Zend_Test
  • Zend_Text
  • Zend_TimeSync
  • Zend_Tool
  • Zend_Tool_Framework
  • Zend_Tool_Project
  • Zend_Translate
  • Zend_Uri
  • Zend_Validate
  • Zend_Version
  • Zend_View
  • Zend_Wildfire
  • Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Ttranslation 27.4% Update 2010-11-28 - Revision 23238 - Version ZF 1.11.x

    Глава 74. Zend_Uri

    74.1. Zend_Uri

    74.1.1. Обзор

    Zend_Uri является компонентой, которая призвана облегчить работу с URI (Uniform Resource Identifiers) и их валидацию. Zend_Uri был создан для обслуживания других компонент, таких, как Zend_Http_Client, но полезен и как отдельная утилита.

    URI всегда начинаются со схемы, после которой следует двоеточие. Структура для разных схем может сильно отличаться. Класс Zend_Uri предоставляет фабрику (паттерн factory), которая возвращает его подклассы, специализирующиеся в различных схемах. Подклассы называются Zend_Uri_<scheme>, где <scheme> - схема в нижнем регистре, с прописной первой буквой. Исключением из этого правила является HTTPS, который обрабатывается подклассом Zend_Uri_Http.

    74.1.2. Создание нового URI

    Zend_Uri будет строить с нуля новый URI, если Zend_Uri::factory() была передана только схема.

    Пример 74.1. Создание нового URI с Zend_Uri::factory()

    // Для того, чтобы создать с нуля новый URI, передайте только схему.
    $uri Zend_Uri::factory('http');

    // $uri является экземпляром Zend_Uri_Http

    Для того, чтобы создать с нуля новый URI, передайте Zend_Uri::factory() только схему. [30]. При передаче не поддерживаемой схемы генерируется исключение Zend_Uri_Exception.

    Если переданные схема или URI поддерживаются, то Zend_Uri::factory() вернет свой подкласс, который специализируется на данной схеме.

    74.1.3. Работа с существующим URI

    Для того, чтобы работать с существующим URI, передайте его весь целиком Zend_Uri::factory().

    Пример 74.2. Работа с существующим URI через Zend_Uri::factory()

    // Чтобы работать с существующим URI, передайте его как параметр
    $uri Zend_Uri::factory('http://www.zend.com');

    // $uri является экземпляром Zend_Uri_Http

    URI будет распарсен и проверен на валидность. Если он оказался невалидным, то сразу же будет сгенерировано исключение Zend_Uri_Exception. Иначе Zend_Uri::factory() вернет свой подкласс, который специализируется на данной схеме.

    74.1.4. Проверка URI

    Функция Zend_Uri::check() может использоваться в том случае, когда нужна только проверка существующего URI.

    Пример 74.3. Проверка URI с помощью Zend_Uri::check()

    // Проверка, является ли данный URI синтаксически корректным
    $valid Zend_Uri::check('http://uri.in.question');

    // $valid равен TRUE при валидном URI, иначе FALSE

    Zend_Uri::check() возвращает булево значение, использование этой функции более удобно, чем вызов Zend_Uri::factory() и отлов исключения.

    74.1.4.1. Разрешение использования "неумных" символов в URI

    По умолчанию Zend_Uri не будет принимать следующие символы, которые в спецификации определены как "неумные" (unwise) и невалидные: "{", "}", "|", "\", "^", "`". Тем не менее, многие реализации принимают эти символы как валидные.

    Можно заставить Zend_Uri принимать эти символы путем установки 'allow_unwise' в TRUE, используя метод Zend_Uri::setConfig():

    Пример 74.4. Разрешение использования спецсимволов в URI

    // Содержит символ '|'
    // Обычно такой вызов будет возвращать 'false':
    $valid Zend_Uri::check('http://example.com/?q=this|that');

    // Тем не менее, вы можете разрешить "неумные" символы
    Zend_Uri::setConfig(array('allow_unwise' => true));
    // будет возвращать 'true'
    $valid Zend_Uri::check('http://example.com/?q=this|that');

    // Установка 'allow_unwise' обратно в FALSE
    Zend_Uri::setConfig(array('allow_unwise' => false));

    [Замечание] Замечание

    Zend_Uri::setConfig() глобально устанавливает опции конфигурации. Рекомендуется сбрасывать опцию 'allow_unwise' в 'false', как показано в примере выше, если только вы не хотите разрешить использование "неумных" символов на все время во всем приложении.

    74.1.5. Общие методы экземпляров

    Каждый экземпляр подкласса Zend_Uri (например, Zend_Uri_Http) имеет несколько методов, полезных для работы с любыми видами URI.

    74.1.5.1. Получение схемы URI

    Схема URI – часть URI, завершающаяся двоеточием. Например, схемой в http://www.zend.com является http.

    Пример 74.5. Получение схемы из объекта Zend_Uri_*

    $uri Zend_Uri::factory('http://www.zend.com');

    $scheme $uri->getScheme();  // "http"

    Метод экземпляра getScheme() возвращает схему из URI.

    74.1.5.2. Получение всего URI

    Пример 74.6. Получение всего URI из объекта Zend_Uri_*

    $uri Zend_Uri::factory('http://www.zend.com');

    echo 
    $uri->getUri();  // "http://www.zend.com"

    Метод getUri() возвращает строковое представление всего URI.

    74.1.5.3. Проверка URI на валидность

    Zend_Uri::factory() всегда производит синтаксическую проверку переданных ему URI и не будет создавать новый экземпляр подкласса Zend_Uri, если данный URI не прошел проверку. Тем не менее, после того, как был инстанцирован подкласс Zend_Uri для нового URI или на основе уже существующего, в результате манипуляций с ним этот URI может стать невалидным.

    Пример 74.7. Проверка объекта Zend_Uri_*

    $uri Zend_Uri::factory('http://www.zend.com');

    $isValid $uri->valid();  // TRUE

    Метод valid() дает возможность проверить, является ли URI по-прежнему валидным.



    [30] На момент написания этой документации Zend_Uri поддерживает только схемы HTTP и HTTPS.

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...