Zend Framework 튜 토리 얼 요청 대상 의 패키지 ZendController_요청 실례 상세 설명

30743 단어
본 논문 의 사례 는 Zend Framework 튜 토리 얼 의 요청 대상 의 패키지 Zend 를 다 루 었 다.Controller_요청 방법.여러분 께 참고 하도록 공유 하 겠 습 니 다. 구체 적 으로 는 다음 과 같 습 니 다.
개술
요청 대상 은 전단 컨트롤 러, 공유 기, 배포 기, 제어 류 간 에 전달 되 는 간단 한 값 대상 입 니 다.요청 대상 은 요청 한 모듈, 컨트롤 러, 동작 및 선택 가능 한 인 자 를 봉 인 했 으 며, HTTP, CLI, PHP - GTK 와 같은 다른 요청 환경 도 포함 되 어 있 습 니 다.
요청 대상 의 기본 실현
├── Request │   ├── Abstract.php │   ├── Apache404.php │   ├── Exception.php │   ├── Http.php │   ├── HttpTestCase.php │   └── Simple.php
Zend_Controller_Request_Abstract
요청 대상 의 기본 방법 을 실현 하 였 다.

_module) {
      $this->_module = $this->getParam($this->getModuleKey());
    }
    return $this->_module;
  }
  public function setModuleName($value)
  {
    $this->_module = $value;
    return $this;
  }
  public function getControllerName()
  {
    if (null === $this->_controller) {
      $this->_controller = $this->getParam($this->getControllerKey());
    }
    return $this->_controller;
  }
  public function setControllerName($value)
  {
    $this->_controller = $value;
    return $this;
  }
  public function getActionName()
  {
    if (null === $this->_action) {
      $this->_action = $this->getParam($this->getActionKey());
    }
    return $this->_action;
  }
  public function setActionName($value)
  {
    $this->_action = $value;
    /**
     * @see ZF-3465
     */
    if (null === $value) {
      $this->setParam($this->getActionKey(), $value);
    }
    return $this;
  }
  public function getModuleKey()
  {
    return $this->_moduleKey;
  }
  public function setModuleKey($key)
  {
    $this->_moduleKey = (string) $key;
    return $this;
  }
  public function getControllerKey()
  {
    return $this->_controllerKey;
  }
  public function setControllerKey($key)
  {
    $this->_controllerKey = (string) $key;
    return $this;
  }
  public function getActionKey()
  {
    return $this->_actionKey;
  }
  public function setActionKey($key)
  {
    $this->_actionKey = (string) $key;
    return $this;
  }
  public function getParam($key, $default = null)
  {
    $key = (string) $key;
    if (isset($this->_params[$key])) {
      return $this->_params[$key];
    }
    return $default;
  }
  public function getUserParams()
  {
    return $this->_params;
  }
  public function getUserParam($key, $default = null)
  {
    if (isset($this->_params[$key])) {
      return $this->_params[$key];
    }
    return $default;
  }
  public function setParam($key, $value)
  {
    $key = (string) $key;
    if ((null === $value) && isset($this->_params[$key])) {
      unset($this->_params[$key]);
    } elseif (null !== $value) {
      $this->_params[$key] = $value;
    }
    return $this;
  }
   public function getParams()
   {
     return $this->_params;
   }
  public function setParams(array $array)
  {
    $this->_params = $this->_params + (array) $array;
    foreach ($array as $key => $value) {
      if (null === $value) {
        unset($this->_params[$key]);
      }
    }
    return $this;
  }
  public function clearParams()
  {
    $this->_params = array();
    return $this;
  }
  public function setDispatched($flag = true)
  {
    $this->_dispatched = $flag ? true : false;
    return $this;
  }
  public function isDispatched()
  {
    return $this->_dispatched;
  }
}


Zend_Controller_Request_Http
Zend_Controller_Request 요청 대상 의 기본 구현.

valid()) {
        $path = $uri->getPath();
        $query = $uri->getQuery();
        if (!empty($query)) {
          $path .= '?' . $query;
        }
        $this->setRequestUri($path);
      } else {
        require_once 'Zend/Controller/Request/Exception.php';
        throw new Zend_Controller_Request_Exception('Invalid URI provided to constructor');
      }
    } else {
      $this->setRequestUri();
    }
  }
  public function __get($key)
  {
    switch (true) {
      case isset($this->_params[$key]):
        return $this->_params[$key];
      case isset($_GET[$key]):
        return $_GET[$key];
      case isset($_POST[$key]):
        return $_POST[$key];
      case isset($_COOKIE[$key]):
        return $_COOKIE[$key];
      case ($key == 'REQUEST_URI'):
        return $this->getRequestUri();
      case ($key == 'PATH_INFO'):
        return $this->getPathInfo();
      case isset($_SERVER[$key]):
        return $_SERVER[$key];
      case isset($_ENV[$key]):
        return $_ENV[$key];
      default:
        return null;
    }
  }
  public function get($key)
  {
    return $this->__get($key);
  }
  public function __set($key, $value)
  {
    require_once 'Zend/Controller/Request/Exception.php';
    throw new Zend_Controller_Request_Exception('Setting values in superglobals not allowed; please use setParam()');
  }
  public function set($key, $value)
  {
    return $this->__set($key, $value);
  }
  public function __isset($key)
  {
    switch (true) {
      case isset($this->_params[$key]):
        return true;
      case isset($_GET[$key]):
        return true;
      case isset($_POST[$key]):
        return true;
      case isset($_COOKIE[$key]):
        return true;
      case isset($_SERVER[$key]):
        return true;
      case isset($_ENV[$key]):
        return true;
      default:
        return false;
    }
  }
  public function has($key)
  {
    return $this->__isset($key);
  }
  public function setQuery($spec, $value = null)
  {
    if ((null === $value) && !is_array($spec)) {
      require_once 'Zend/Controller/Exception.php';
      throw new Zend_Controller_Exception('Invalid value passed to setQuery(); must be either array of values or key/value pair');
    }
    if ((null === $value) && is_array($spec)) {
      foreach ($spec as $key => $value) {
        $this->setQuery($key, $value);
      }
      return $this;
    }
    $_GET[(string) $spec] = $value;
    return $this;
  }
  public function getQuery($key = null, $default = null)
  {
    if (null === $key) {
      return $_GET;
    }
    return (isset($_GET[$key])) ? $_GET[$key] : $default;
  }
  public function setPost($spec, $value = null)
  {
    if ((null === $value) && !is_array($spec)) {
      require_once 'Zend/Controller/Exception.php';
      throw new Zend_Controller_Exception('Invalid value passed to setPost(); must be either array of values or key/value pair');
    }
    if ((null === $value) && is_array($spec)) {
      foreach ($spec as $key => $value) {
        $this->setPost($key, $value);
      }
      return $this;
    }
    $_POST[(string) $spec] = $value;
    return $this;
  }
  public function getPost($key = null, $default = null)
  {
    if (null === $key) {
      return $_POST;
    }
    return (isset($_POST[$key])) ? $_POST[$key] : $default;
  }
  public function getCookie($key = null, $default = null)
  {
    if (null === $key) {
      return $_COOKIE;
    }
    return (isset($_COOKIE[$key])) ? $_COOKIE[$key] : $default;
  }
  public function getServer($key = null, $default = null)
  {
    if (null === $key) {
      return $_SERVER;
    }
    return (isset($_SERVER[$key])) ? $_SERVER[$key] : $default;
  }
  public function getEnv($key = null, $default = null)
  {
    if (null === $key) {
      return $_ENV;
    }
    return (isset($_ENV[$key])) ? $_ENV[$key] : $default;
  }
  public function setRequestUri($requestUri = null)
  {
    if ($requestUri === null) {
      if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { // check this first so IIS will catch
        $requestUri = $_SERVER['HTTP_X_REWRITE_URL'];
      } elseif (
        // IIS7 with URL Rewrite: make sure we get the unencoded url (double slash problem)
        isset($_SERVER['IIS_WasUrlRewritten'])
        && $_SERVER['IIS_WasUrlRewritten'] == '1'
        && isset($_SERVER['UNENCODED_URL'])
        && $_SERVER['UNENCODED_URL'] != ''
        ) {
        $requestUri = $_SERVER['UNENCODED_URL'];
      } elseif (isset($_SERVER['REQUEST_URI'])) {
        $requestUri = $_SERVER['REQUEST_URI'];
        // Http proxy reqs setup request uri with scheme and host [and port] + the url path, only use url path
        $schemeAndHttpHost = $this->getScheme() . '://' . $this->getHttpHost();
        if (strpos($requestUri, $schemeAndHttpHost) === 0) {
          $requestUri = substr($requestUri, strlen($schemeAndHttpHost));
        }
      } elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0, PHP as CGI
        $requestUri = $_SERVER['ORIG_PATH_INFO'];
        if (!empty($_SERVER['QUERY_STRING'])) {
          $requestUri .= '?' . $_SERVER['QUERY_STRING'];
        }
      } else {
        return $this;
      }
    } elseif (!is_string($requestUri)) {
      return $this;
    } else {
      // Set GET items, if available
      if (false !== ($pos = strpos($requestUri, '?'))) {
        // Get key => value pairs and set $_GET
        $query = substr($requestUri, $pos + 1);
        parse_str($query, $vars);
        $this->setQuery($vars);
      }
    }
    $this->_requestUri = $requestUri;
    return $this;
  }
  public function getRequestUri()
  {
    if (empty($this->_requestUri)) {
      $this->setRequestUri();
    }
    return $this->_requestUri;
  }
  public function setBaseUrl($baseUrl = null)
  {
    if ((null !== $baseUrl) && !is_string($baseUrl)) {
      return $this;
    }
    if ($baseUrl === null) {
      $filename = (isset($_SERVER['SCRIPT_FILENAME'])) ? basename($_SERVER['SCRIPT_FILENAME']) : '';
      if (isset($_SERVER['SCRIPT_NAME']) && basename($_SERVER['SCRIPT_NAME']) === $filename) {
        $baseUrl = $_SERVER['SCRIPT_NAME'];
      } elseif (isset($_SERVER['PHP_SELF']) && basename($_SERVER['PHP_SELF']) === $filename) {
        $baseUrl = $_SERVER['PHP_SELF'];
      } elseif (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $filename) {
        $baseUrl = $_SERVER['ORIG_SCRIPT_NAME']; // 1and1 shared hosting compatibility
      } else {
        // Backtrack up the script_filename to find the portion matching
        // php_self
        $path  = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : '';
        $file  = isset($_SERVER['SCRIPT_FILENAME']) ? $_SERVER['SCRIPT_FILENAME'] : '';
        $segs  = explode('/', trim($file, '/'));
        $segs  = array_reverse($segs);
        $index  = 0;
        $last  = count($segs);
        $baseUrl = '';
        do {
          $seg   = $segs[$index];
          $baseUrl = '/' . $seg . $baseUrl;
          ++$index;
        } while (($last > $index) && (false !== ($pos = strpos($path, $baseUrl))) && (0 != $pos));
      }
      // Does the baseUrl have anything in common with the request_uri?
      $requestUri = $this->getRequestUri();
      if (0 === strpos($requestUri, $baseUrl)) {
        // full $baseUrl matches
        $this->_baseUrl = $baseUrl;
        return $this;
      }
      if (0 === strpos($requestUri, dirname($baseUrl))) {
        // directory portion of $baseUrl matches
        $this->_baseUrl = rtrim(dirname($baseUrl), '/');
        return $this;
      }
      $truncatedRequestUri = $requestUri;
      if (($pos = strpos($requestUri, '?')) !== false) {
        $truncatedRequestUri = substr($requestUri, 0, $pos);
      }
      $basename = basename($baseUrl);
      if (empty($basename) || !strpos($truncatedRequestUri, $basename)) {
        // no match whatsoever; set it blank
        $this->_baseUrl = '';
        return $this;
      }
      // If using mod_rewrite or ISAPI_Rewrite strip the script filename
      // out of baseUrl. $pos !== 0 makes sure it is not matching a value
      // from PATH_INFO or QUERY_STRING
      if ((strlen($requestUri) >= strlen($baseUrl))
        && ((false !== ($pos = strpos($requestUri, $baseUrl))) && ($pos !== 0)))
      {
        $baseUrl = substr($requestUri, 0, $pos + strlen($baseUrl));
      }
    }
    $this->_baseUrl = rtrim($baseUrl, '/');
    return $this;
  }
  public function getBaseUrl($raw = false)
  {
    if (null === $this->_baseUrl) {
      $this->setBaseUrl();
    }
    return (($raw == false) ? urldecode($this->_baseUrl) : $this->_baseUrl);
  }
  public function setBasePath($basePath = null)
  {
    if ($basePath === null) {
      $filename = (isset($_SERVER['SCRIPT_FILENAME']))
           ? basename($_SERVER['SCRIPT_FILENAME'])
           : '';
      $baseUrl = $this->getBaseUrl();
      if (empty($baseUrl)) {
        $this->_basePath = '';
        return $this;
      }
      if (basename($baseUrl) === $filename) {
        $basePath = dirname($baseUrl);
      } else {
        $basePath = $baseUrl;
      }
    }
    if (substr(PHP_OS, 0, 3) === 'WIN') {
      $basePath = str_replace('\\', '/', $basePath);
    }
    $this->_basePath = rtrim($basePath, '/');
    return $this;
  }
  public function getBasePath()
  {
    if (null === $this->_basePath) {
      $this->setBasePath();
    }
    return $this->_basePath;
  }
  public function setPathInfo($pathInfo = null)
  {
    if ($pathInfo === null) {
      $baseUrl = $this->getBaseUrl(); // this actually calls setBaseUrl() & setRequestUri()
      $baseUrlRaw = $this->getBaseUrl(false);
      $baseUrlEncoded = urlencode($baseUrlRaw);
      if (null === ($requestUri = $this->getRequestUri())) {
        return $this;
      }
      // Remove the query string from REQUEST_URI
      if ($pos = strpos($requestUri, '?')) {
        $requestUri = substr($requestUri, 0, $pos);
      }
      if (!empty($baseUrl) || !empty($baseUrlRaw)) {
        if (strpos($requestUri, $baseUrl) === 0) {
          $pathInfo = substr($requestUri, strlen($baseUrl));
        } elseif (strpos($requestUri, $baseUrlRaw) === 0) {
          $pathInfo = substr($requestUri, strlen($baseUrlRaw));
        } elseif (strpos($requestUri, $baseUrlEncoded) === 0) {
          $pathInfo = substr($requestUri, strlen($baseUrlEncoded));
        } else {
          $pathInfo = $requestUri;
        }
      } else {
        $pathInfo = $requestUri;
      }
    }
    $this->_pathInfo = (string) $pathInfo;
    return $this;
  }
  public function getPathInfo()
  {
    if (empty($this->_pathInfo)) {
      $this->setPathInfo();
    }
    return $this->_pathInfo;
  }
  public function setParamSources(array $paramSources = array())
  {
    $this->_paramSources = $paramSources;
    return $this;
  }
  public function getParamSources()
  {
    return $this->_paramSources;
  }
  public function setParam($key, $value)
  {
    $key = (null !== ($alias = $this->getAlias($key))) ? $alias : $key;
    parent::setParam($key, $value);
    return $this;
  }
  public function getParam($key, $default = null)
  {
    $keyName = (null !== ($alias = $this->getAlias($key))) ? $alias : $key;
    $paramSources = $this->getParamSources();
    if (isset($this->_params[$keyName])) {
      return $this->_params[$keyName];
    } elseif (in_array('_GET', $paramSources) && (isset($_GET[$keyName]))) {
      return $_GET[$keyName];
    } elseif (in_array('_POST', $paramSources) && (isset($_POST[$keyName]))) {
      return $_POST[$keyName];
    }
    return $default;
  }
  public function getParams()
  {
    $return    = $this->_params;
    $paramSources = $this->getParamSources();
    if (in_array('_GET', $paramSources)
      && isset($_GET)
      && is_array($_GET)
    ) {
      $return += $_GET;
    }
    if (in_array('_POST', $paramSources)
      && isset($_POST)
      && is_array($_POST)
    ) {
      $return += $_POST;
    }
    return $return;
  }
  public function setParams(array $params)
  {
    foreach ($params as $key => $value) {
      $this->setParam($key, $value);
    }
    return $this;
  }
  public function setAlias($name, $target)
  {
    $this->_aliases[$name] = $target;
    return $this;
  }
  public function getAlias($name)
  {
    if (isset($this->_aliases[$name])) {
      return $this->_aliases[$name];
    }
    return null;
  }
  public function getAliases()
  {
    return $this->_aliases;
  }
  public function getMethod()
  {
    return $this->getServer('REQUEST_METHOD');
  }
  public function isPost()
  {
    if ('POST' == $this->getMethod()) {
      return true;
    }
    return false;
  }
  public function isGet()
  {
    if ('GET' == $this->getMethod()) {
      return true;
    }
    return false;
  }
  public function isPut()
  {
    if ('PUT' == $this->getMethod()) {
      return true;
    }
    return false;
  }
  public function isDelete()
  {
    if ('DELETE' == $this->getMethod()) {
      return true;
    }
    return false;
  }
  public function isHead()
  {
    if ('HEAD' == $this->getMethod()) {
      return true;
    }
    return false;
  }
  public function isOptions()
  {
    if ('OPTIONS' == $this->getMethod()) {
      return true;
    }
    return false;
  }
  public function isXmlHttpRequest()
  {
    return ($this->getHeader('X_REQUESTED_WITH') == 'XMLHttpRequest');
  }
  public function isFlashRequest()
  {
    $header = strtolower($this->getHeader('USER_AGENT'));
    return (strstr($header, ' flash')) ? true : false;
  }
  public function isSecure()
  {
    return ($this->getScheme() === self::SCHEME_HTTPS);
  }
  public function getRawBody()
  {
    if (null === $this->_rawBody) {
      $body = file_get_contents('php://input');
      if (strlen(trim($body)) > 0) {
        $this->_rawBody = $body;
      } else {
        $this->_rawBody = false;
      }
    }
    return $this->_rawBody;
  }
  public function getHeader($header)
  {
    if (empty($header)) {
      require_once 'Zend/Controller/Request/Exception.php';
      throw new Zend_Controller_Request_Exception('An HTTP header name is required');
    }
    // Try to get it from the $_SERVER array first
    $temp = 'HTTP_' . strtoupper(str_replace('-', '_', $header));
    if (isset($_SERVER[$temp])) {
      return $_SERVER[$temp];
    }
    // This seems to be the only way to get the Authorization header on
    // Apache
    if (function_exists('apache_request_headers')) {
      $headers = apache_request_headers();
      if (isset($headers[$header])) {
        return $headers[$header];
      }
      $header = strtolower($header);
      foreach ($headers as $key => $value) {
        if (strtolower($key) == $header) {
          return $value;
        }
      }
    }
    return false;
  }
  public function getScheme()
  {
    return ($this->getServer('HTTPS') == 'on') ? self::SCHEME_HTTPS : self::SCHEME_HTTP;
  }
  public function getHttpHost()
  {
    $host = $this->getServer('HTTP_HOST');
    if (!empty($host)) {
      return $host;
    }
    $scheme = $this->getScheme();
    $name  = $this->getServer('SERVER_NAME');
    $port  = $this->getServer('SERVER_PORT');
    if(null === $name) {
      return '';
    }
    elseif (($scheme == self::SCHEME_HTTP && $port == 80) || ($scheme == self::SCHEME_HTTPS && $port == 443)) {
      return $name;
    } else {
      return $name . ':' . $port;
    }
  }
  public function getClientIp($checkProxy = true)
  {
    if ($checkProxy && $this->getServer('HTTP_CLIENT_IP') != null) {
      $ip = $this->getServer('HTTP_CLIENT_IP');
    } else if ($checkProxy && $this->getServer('HTTP_X_FORWARDED_FOR') != null) {
      $ip = $this->getServer('HTTP_X_FORWARDED_FOR');
    } else {
      $ip = $this->getServer('REMOTE_ADDR');
    }
    return $ip;
  }
}


상술 한 유형의 실현 을 통 해 알 수 있 듯 이 클래스 는 우리 에 게 필요 한 데 이 터 를 얻 기 위해 많은 편리 한 방법 을 제공 했다.예 를 들 면:
모듈 이름 은 getModuleName () 과 setModuleName () 을 통 해 접근 할 수 있 습 니 다.컨트롤 러 이름 은 getController Name () 과 setController Name () 을 통 해 접근 할 수 있 습 니 다.컨트롤 러 가 호출 하 는 동작 이름 은 getActionName () 과 setActionName () 을 통 해 접근 할 수 있 습 니 다.접근 가능 한 매개 변 수 는 키 값 이 맞 는 관련 배열 입 니 다.배열 은 getParams () 와 setParams () 를 통 해 가 져 오고 설정 할 수 있 으 며, 하나의 매개 변 수 는 getParam () 과 setParam () 을 통 해 가 져 오고 설정 할 수 있 습 니 다.
요청 한 형식 에 따라 더 많은 사용 가능 한 방법 이 존재 합 니 다.기본 ZendController_Request_Http 요청 대상, 접근 요청 url, 경로 정보, $GET 와 $POST 매개 변수 방법 등등.
요청 대상 이 전단 컨트롤 러 로 먼저 전 달 됩 니 다.요청 대상 을 제공 하지 않 으 면 배포 과정의 시작, 경로 과정 이 발생 하기 전에 예화 된다.요청 대상 은 배포 체인 의 모든 대상 에 게 전 달 됩 니 다.
그리고 요청 대상 은 테스트 에 유용 하 다.개발 자 는 필요 에 따라 모듈, 컨트롤 러, 동작, 파라미터, URI 등 요청 환경 을 구축 하고 이 를 전단 컨트롤 러 에 전송 하여 프로그램의 흐름 을 테스트 할 수 있다.응답 대상 과 협조 하면 MVC 프로그램 에 대해 정확 하고 교묘 한 유닛 테스트 (unittesting) 를 할 수 있다.
HTTP 요청
접근 요청 데이터
Zend_Controller_Request_Http 는 컨트롤 러 와 동작 공유 기 변수의 키 이름과 값, URL 에서 분 석 된 추가 매개 변수 등 관련 값 에 대한 접근 을 패키지 합 니 다.또한 현재 기본 주소 (Base URL) 와 요청 URI 를 관리 하 는 공공 구성원 의 초 전역 변수 에 접근 할 수 있 습 니 다.초 전역 변 수 는 요청 대상 에 값 을 부여 할 수 없 지만 setParam / getParam 방법 으로 사용자 인 자 를 설정 / 가 져 올 수 있 습 니 다.
참고: 초 전역 데이터
통과 ZendController_Request_Http 는 공공 구성원 속성의 초 전역 데 이 터 를 방문 합 니 다. 이러한 속성 명 (초 전역 배열 의 키) 은 특정한 순서에 따라 초 전역 변 수 를 일치 시 킵 니 다. 1. GET, 2. POST, 3. COOKIE, 4. SERVER, 5. ENV.
특정한 초 전역 변수 도 $ 와 같은 특정한 방법 으로 접근 할 수 있 습 니 다.POST ['user'] 는 요청 대상 의 getPost ('user') 를 호출 하여 접근 할 수 있 으 며, getQuery () 는 $ 를 가 져 올 수 있 습 니 다.GET 요소, getHeader () 는 요청 메시지 헤 더 를 가 져 올 수 있 습 니 다.
참고: GET 와 POST 데이터
주의: 요청 대상 에서 데 이 터 를 방문 하 는 것 은 어떠한 여과 도 거치 지 않 았 습 니 다. 공유 기와 배포 기 는 작업 에 따라 여과 데 이 터 를 검증 하지만 요청 대상 에 서 는 처리 되 지 않 았 습 니 다.
참고: 원본 (Raw) POST 데이터 도 가 져 옵 니 다!
1.5.0 부터 getRawBody () 방법 으로 원본 post 데 이 터 를 얻 을 수 있 습 니 다.데이터 가 그런 식 으로 제출 되 지 않 으 면 false 로 되 돌아 가지 만 post 의 전체 (full boday) 는 예외 입 니 다.
RESTful MVC 프로그램 을 개발 하면 내용 을 받 아들 이 는 데 상당히 유용 하 다.
요청 대상 에서 setParam () 과 getParam () 을 사용 하여 사용자 인 자 를 설정 하고 가 져 올 수 있 습 니 다.공유 기 는 요청 URI 의 매개 변수 에 따라 이 기능 요청 대상 을 이용 하여 매개 변 수 를 설정 합 니 다.
참고: getParam () 은 사용자 인자 만 가 져 올 수 있 는 것 이 아 닙 니 다.
getParam () 은 사실상 몇 개의 자원 에서 인 자 를 가 져 옵 니 다.우선 순위 에 따라 정렬: setParam () 을 통 해 설 정 된 사용자 매개 변수, GET 매개 변수, 마지막 으로 POST 매개 변수 입 니 다.이 방법 을 통 해 데 이 터 를 얻 을 때 이 점 을 주의해 야 한다.
setParam () 을 통 해 설정 한 매개 변수 에서 (매개 변수) 를 가 져 오 려 면 getUserParam () 을 사용 하 십시오.
또한 1.5.0 부터 어떤 매개 변수 원본 을 검색 할 지 잠 글 수 있 습 니 다. setParamSources () 는 빈 배열 이나 하나 이상 의 지시 가 있 는 매개 변수 원본 이 허용 되 는 값 을 지정 할 수 있 습 니 다. 'GET '또는'POST 의 배열;접근 만 제한 하려 면 'GET ', 그러면 setParamSources (array (' GET ') 를 지정 합 니 다.
참고: 아파 치 관련
apache 404 프로 세 서 를 사용 하여 전단 컨트롤 러 에 요청 을 전달 하거나 재 작성 규칙 (rewriterules) 의 PT 로 고 를 사용 하면 URI 는 $ 에 포 함 됩 니 다.SERVER ['REDIRECT URL'], $ 가 아 닌SERVER['REQUEST_URI']。이러한 설정 을 사용 하여 잘못된 경 로 를 가 져 오 려 면 Zend 를 사용 해 야 합 니 다.Controller_Request_기본 HTTP 클래스 대신 Apache 404 클래스:

$request = new Zend_Controller_Request_Apache404();
$front->setRequest($request);


이 종 류 는 Zend 를 물 려 받 았 습 니 다.Controller_Request_Http, 요청 URI 의 자동 발견 (autodiscovery) 을 간단하게 수정 하 였 습 니 다. 간단 한 교체 장치 (drop - in replacement) 로 사용 할 수 있 습 니 다.기본 주소 와 하위 디 렉 터 리
Zend_Controller_Request_Http 하위 디 렉 터 리 에 Zend 사용 허용Controller_Router_Rewrite。Zend_Controller_Request_Http 는 기본 주 소 를 자동 으로 감지 하고 설정 하려 고 합 니 다.
예 를 들 어 index. php 를 웹 서버 의 이름 / procject / my app / index. phop 서브 디 렉 터 리 에 두 면 기본 주 소 는 / procject / my app 으로 설정 해 야 합 니 다.모든 경로 가 일치 하 는 지 계산 하기 전에 이 문자열 을 경로 에서 제거 합 니 다.이 문자열 은 모든 경로 앞 에 추가 되 어야 합 니 다.경로 'user /: username' 이 유사 합 니 다.http://localhost/projects/myapp/user/martel 화해시키다http://example.com/user/martel라 는 URL 을 붙 였 다.
참고: URL 검사 대소 문자 구분
기본 주소 의 자동 검색 은 대소 문 자 를 구분 하기 때문에 URL 이 파일 시스템 의 하위 디 렉 터 리 와 일치 하 는 지 확인 해 야 합 니 다.그렇지 않 으 면 이상 을 일 으 킬 수 있다.
기본 주소 가 정확 하지 않 으 면 Zend 를 이용 할 수 있 습 니 다.Controller_Request_Http 또는 ZendController_Front 류 의 setBaseUrl () 방법 은 자신의 기본 경 로 를 설정 합 니 다.Zend_Controller_Front 설정 이 가장 쉽 습 니 다. 기본 주 소 를 요청 대상 으로 가 져 옵 니 다.사용자 정의 기본 주소 의 용법 예:

/**
 * Dispatch Request with custom base URL with Zend_Controller_Front.
 */
$router   = new Zend_Controller_Router_Rewrite();
$controller = Zend_Controller_Front::getInstance();
$controller->setControllerDirectory('./application/controllers')
      ->setRouter($router)
      ->setBaseUrl('/projects/myapp'); // set the base url!
$response  = $controller->dispatch();


판단 요청 방식
getMethod () 는 현재 자원 을 요청 하 는 HTTP 요청 방법 을 결정 할 수 있 습 니 다.또한 요청 한 특정 유형 이 존재 하 는 지 물 어보 면 불 응답 을 받 을 수 있 는 방법 이 많 습 니 다.
isGet() isPost() isPut() isDelete() isHead() isOptions()
이 기본 적 인 사례 들 은 RESTful MVC 구 조 를 만 드 는 것 이다.
AJAX 요청
Zend_Controller_Request_Http 는 AJAX 요청 을 검사 하 는 초보적인 방법 이 있 습 니 다: isXmlHttpRequest ().이 방법 은 'XML HttpRequest' 값 을 가 진 HTTP 요청 헤더 X - Requested - With 를 찾 습 니 다.발견 하면 트 루 로 돌아 갑 니 다.
현재 이 머리 는 다음 JS 라 이브 러 리 로 부족 하 게 전 달 됩 니 다: Prototype / Scriptaculous (and libraries derived from Prototype) Yahoo!UI Library jQuery MochiKit
대부분의 AJAX 라 이브 러 리 는 맞 춤 형 HTTP 요청 헤 더 를 보 낼 수 있 습 니 다.라 이브 러 리 에서 이 헤 더 를 보 내지 않 았 다 면, isXmlHttpRequest () 방법 으로 간단하게 추가 하 십시오.하위 클래스 화 요청 대상.
요청 대상 은 환경 을 요청 하 는 용기 입 니 다.컨트롤 러 체인 은 실제 적 으로 컨트롤 러, 동작, 선택 할 수 있 는 매개 변수 와 배포 상 태 를 설정 하고 가 져 오 는 방법 만 알 아야 한다.기본적으로 컨트롤 러 와 action 키 를 사용 하여 자신의 인 자 를 조회 하여 컨트롤 러 와 동작 을 확인 할 것 을 요청 합 니 다.
필요 한 데 이 터 를 얻 기 위해 서 는 요청 클래스 가 필요 할 때 기본 클래스 나 파생 클래스 를 확장 할 수 있 습 니 다.예 를 들 어 HTTP 환경, CLI 환경 또는 PHP - GTK 환경.
더 많은 zend 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,, 및《 php 흔 한 데이터베이스 조작 기교 집 합 》
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기