国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

Zend Framework教程之請求對象的封裝Zend_Controller_Request實(shí)例詳解

2020-03-22 18:29:27
字體:
供稿:網(wǎng)友
PHP Zend Framework教程之請求對象的封裝Zend_Controller_Request實(shí)例詳解
本文實(shí)例講述了Zend Framework教程之請求對象的封裝Zend_Controller_Request方法。分享給大家供大家參考,具體如下:概述請求對象是在前端控制器,路由器,分發(fā)器,以及控制類間傳遞的簡單值對象。請求對象封裝了請求的模塊,控制器,動作以及可選的參數(shù),還包括其他的請求環(huán)境,如HTTP,CLI,PHP-GTK。請求對象的基本實(shí)現(xiàn)├── Request
│ ├── Abstract.php
│ ├── Apache404.php
│ ├── Exception.php
│ ├── Http.php
│ ├── HttpTestCase.php
│ └── Simple.phpZend_Controller_Request_Abstract實(shí)現(xiàn)了請求對象的基本方法。abstract html' target='_blank'>class Zend_Controller_Request_Abstract protected $_dispatched = false; protected $_module; protected $_moduleKey = 'module'; protected $_controller; protected $_controllerKey = 'controller'; protected $_action; protected $_actionKey = 'action'; protected $_params = array(); public function getModuleName() if (null === $this- _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_HttpZend_Controller_Request請求對象的默認(rèn)實(shí)現(xiàn)。require_once 'Zend/Controller/Request/Abstract.php';require_once 'Zend/Uri.php';class Zend_Controller_Request_Http extends Zend_Controller_Request_Abstract const SCHEME_HTTP = 'http'; const SCHEME_HTTPS = 'https'; protected $_paramSources = array('_GET', '_POST'); protected $_requestUri; protected $_baseUrl = null; protected $_basePath = null; protected $_pathInfo = ''; protected $_params = array(); protected $_rawBody; protected $_aliases = array(); public function __construct($uri = null) if (null !== $uri) { if (!$uri instanceof Zend_Uri) { $uri = Zend_Uri::factory($uri); if ($uri- 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;從上述類的實(shí)現(xiàn),不難看出,類為我們提供了很多方便的方法來獲取需要的數(shù)據(jù)。例如:模塊名可通過getModuleName()和setModuleName()訪問。
控制器名可通過getControllerName()和setControllerName()訪問。
控制器調(diào)用的動作名稱可通過getActionName()和setActionName()訪問。
可訪問的參數(shù)是一個鍵值對的關(guān)聯(lián)數(shù)組。數(shù)組可通過getParams()和 setParams()獲取及設(shè)置,單個參數(shù)可以通過 getParam() 和 setParam()獲取及設(shè)置?;谡埱蟮念愋痛嬖诟嗟目捎梅椒?。默認(rèn)的Zend_Controller_Request_Http請求對象,擁有訪問請求url、路徑信息、$_GET 和 $_POST參數(shù)的方法等等。請求對象先被傳入到前端控制器。如果沒有提供請求對象,它將在分發(fā)過程的開始、任何路由過程發(fā)生之前實(shí)例化。請求對象將被傳遞到分發(fā)鏈中的每個對象。而且,請求對象在測試中是很有用的。開發(fā)人員可根據(jù)需要搭建請求環(huán)境,包括模塊、控制器、動作、參數(shù)、URI等等,并且將其傳入前端控制器來測試程序流向。如果與響應(yīng)對象配合,可以對MVC程序進(jìn)行精確巧妙的單元測試(unit testing)。HTTP 請求訪問請求數(shù)據(jù)Zend_Controller_Request_Http封裝了對相關(guān)值的訪問,如控制器和動作路由器變量的鍵名和值,從URL解析的附加參數(shù)。它還允許訪問作為公共成員的超全局變量,管理當(dāng)前的基地址(Base URL)和請求URI。超全局變量不能在請求對象中賦值,但可以通過setParam/getParam方法設(shè)定/獲取用戶參數(shù)。Note: 超全局?jǐn)?shù)據(jù)通過Zend_Controller_Request_Http訪問公共成員屬性的超全局?jǐn)?shù)據(jù),有必要認(rèn)識到一點(diǎn),這些屬性名(超全局?jǐn)?shù)組的鍵)按照特定次序匹配超全局變量:1. GET,2.POST,3. COOKIE,4. SERVER,5. ENV。特定的超全局變量也可以選擇特定的方法來訪問,如$_POST['user']可以調(diào)用請求對象的getPost('user')訪問,getQuery()可以獲取$_GET元素,getHeader()可以獲取請求消息頭。Note: GET和POST數(shù)據(jù)需要注意:在請求對象中訪問數(shù)據(jù)是沒有經(jīng)過任何過濾的,路由器和分發(fā)器根據(jù)任務(wù)來驗(yàn)證過濾數(shù)據(jù),但在請求對象中沒有任何處理。Note: 也獲取原始 (Raw) POST 數(shù)據(jù)!從 1.5.0 開始,也可以通過 getRawBody() 方法獲取原始 post 數(shù)據(jù)。如果沒有數(shù)據(jù)以那種方式提交,該方法返回 false,但 post 的全體(full boday)是個例外。當(dāng)開發(fā)一個 RESTful MVC 程序,這個對于接受內(nèi)容相當(dāng)有用??梢栽谡埱髮ο笾惺褂胹etParam() 和getParam()來設(shè)置和獲取用戶參數(shù)。 路由器根據(jù)請求URI中的參數(shù),利用這項(xiàng)功能請求對象設(shè)定參數(shù)。Note: getParam()不只可以獲取用戶參數(shù)getParam()事實(shí)上從幾個資源中獲取參數(shù)。根據(jù)優(yōu)先級排序:通過setParam()設(shè)置的用戶參數(shù),GET 參數(shù),最后是POST參數(shù)。 通過該方法獲取數(shù)據(jù)時需要注意這點(diǎn)。如果你希望從你通過 setParam() 設(shè)置的參數(shù)中獲取(參數(shù)),使用 getUserParam()。另外,從 1.5.0 開始,可以鎖定搜索哪個參數(shù)源,setParamSources() 允許指定一個空數(shù)組或者一個帶有一個或多個指示哪個參數(shù)源被允許(缺省兩者都被允許)的值 '_GET'或'_POST'的數(shù)組;如果想限制只訪問 '_GET',那么指定 setParamSources(array('_GET')) 。Note: Apache相關(guān)如果使用apache的404處理器來傳遞請求到前端控制器,或者使用重寫規(guī)則(rewrite rules)的PT標(biāo)志,URI包含在$_SERVER['REDIRECT_URL'],而不是$_SERVER['REQUEST_URI']。如果使用這樣的設(shè)定并獲取無效的路由,應(yīng)該使用Zend_Controller_Request_Apache404類代替默認(rèn)的HTTP類:$request = new Zend_Controller_Request_Apache404();$front- setRequest($request);這個類繼承了Zend_Controller_Request_Http,并簡單的修改了請求URI的自動發(fā)現(xiàn)(autodiscovery),它可以用來作為簡易替換器件(drop-in replacement)。
基地址和子目錄Zend_Controller_Request_Http允許在子目錄中使用Zend_Controller_Router_Rewrite。Zend_Controller_Request_Http試圖自動的檢測你的基地址,并進(jìn)行相應(yīng)的設(shè)置。例如,如果將 index.php 放在web服務(wù)器的名為/projects/myapp/index.php子目錄中,基地址應(yīng)該被設(shè)置為/projects/myapp。計(jì)算任何路由匹配之前將先從路徑中去除這個字符串。這個字串需要被加入到任何路由前面。路由 'user/:username'將匹配類似http://localhost/projects/myapp/user/martel 和http://example.com/user/martel的URL。Note: URL檢測區(qū)分大小寫基地址的自動檢測是區(qū)分大小寫的,因此需要確保URL與文件系統(tǒng)中的子目錄匹配。否則將會引發(fā)異常。如果基地址經(jīng)檢測不正確,可以利用Zend_Controller_Request_Http或者Zend_Controller_Front類的setBaseUrl()方法設(shè)置自己的基路徑。Zend_Controller_Front設(shè)置最容易,它將導(dǎo)入基地址到請求對象。定制基地址的用法舉例: * 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() 允許你決定用于請求當(dāng)前資源的 HTTP 請求方法。另外,當(dāng)詢問是否一個請求的特定類型是否已經(jīng)存在,有許多方法允許你獲得布爾響應(yīng):isGet()
isPost()
isPut()
isDelete()
isHead()
isOptions()這些基本用例是來創(chuàng)建 RESTful MVC 架構(gòu)的。AJAX 請求Zend_Controller_Request_Http 有一個初步的方法用來檢測AJAX請求:isXmlHttpRequest()。這個方法尋找一個帶有'XMLHttpRequest' 值的HTTP請求頭X-Requested-With;如果發(fā)現(xiàn),就返回true。當(dāng)前,這個頭用下列JS庫缺省地傳遞:
Prototype/Scriptaculous (and libraries derived from Prototype)
Yahoo! UI Library
jQuery
MochiKit大多數(shù) AJAX 庫允許發(fā)送定制的HTTP請求頭;如果你的庫沒有發(fā)送這個頭,簡單地把它作為一個請求頭添加上確保isXmlHttpRequest() 方法工作。
子類化請求對象。請求對象是請求環(huán)境的容器??刂破麈湆?shí)際上只需要知道如何設(shè)置和獲取控制器、動作,可選的參數(shù)以及分發(fā)的狀態(tài)。默認(rèn)的,請求將使用controller和action鍵查詢自己的參數(shù)來確定控制器和動作。需要一個請求類來與特定的環(huán)境交互以獲得需要的數(shù)據(jù)時,可以擴(kuò)展該基類或它的衍生類。例如HTTP環(huán)境,CLI環(huán)境,或者PHP-GTK環(huán)境。更多關(guān)于zend相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Zend FrameWork框架入門教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《Yii框架入門及常用技巧總結(jié)》、《ThinkPHP入門教程》、《php面向?qū)ο?/u>程序設(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大连市| 金乡县| 壤塘县| 防城港市| 达拉特旗| 诸城市| 个旧市| 望都县| 崇州市| 双流县| 株洲县| 桐城市| 龙井市| 获嘉县| 乐东| 西藏| 吴川市| 敖汉旗| 黄平县| 如皋市| 潞城市| 天门市| 安图县| 阜阳市| 南丹县| 巴楚县| 天气| 收藏| 灵璧县| 禄劝| 青神县| 枣阳市| 南昌市| 谷城县| 读书| 枞阳县| 南昌县| 淄博市| 清镇市| 唐海县| 惠来县|