Programmer's Reference Guide
L'objet requête est un objet simple de valeur qui est passé entre Zend_Controller_Front et le
routeur, le dispatcheur, et les classes de contrôleur. Il empaquette les noms du module demandé, du contrôleur,
de l'action, et des paramètres facultatifs, aussi bien que le reste de l'environnement de requête, que ce soit
le HTTP, du CLI, ou de PHP-GTK.
Le nom de module est accessible par
getModuleName()etsetModuleName().Le nom de contrôleur est accessible par
getControllerName()etsetControllerName().Le nom de l'action à appeler dans le contrôleur est accessible par
getActionName()etsetActionName().Les paramètres accessibles par l'action sont dans un tableau associatif de paires clés/valeurs qui sont récupérables par
getParams()et modifiables parsetParams(), ou individuellement pargetParam()etsetParam().
En fonction du type de requête, il peut y avoir plus de méthodes disponibles. La requête par défaut
utilisée, Zend_Controller_Request_Http, par exemple, a des méthodes pour rechercher l'URI de la
requête, l'information sur le chemin, les paramètres $_GET et $_POST, etc.
L'objet requête est passé au contrôleur frontal, ou si aucun n'est fourni, il est instancié au début du processus de dispatching, avant que le routage ne se produise. Il est passé à travers chaque objet dans la chaîne de dispatching.
De plus, l'objet requête est particulièrement utile pour les tests. Le développeur peut simuler l'environnement de requête, y compris le module, le contrôleur, l'action, les paramètres, l'URI, etc., et passe l'objet requête au contrôleur frontal pour tester une application. Une fois appairés avec l'objet réponse, les tests unitaires élaboré et précis d'application MVC deviennent possible.
Zend_Controller_Request_Http encapsule l'accès aux valeurs appropriées telles que le nom
de la clé et la valeur pour les variables contrôleur d'action et routeur , et tous les paramètres
additionnels analysés à partir de l'URI. Il permet en plus l'accès aux valeurs contenues dans les
superglobales en tant que membres publics, et contrôle l'URL de base et l'URI courants de la requête. Des
valeurs superglobales ne peuvent pas être placées dans un objet requête, au lieu de cela utilisez les
méthodes setParam/getParam pour régler ou pour récupérer des paramètres d'utilisateur.
![]() |
Données superglobales |
|---|---|
En accédant à des données superglobales par |
Des superglobales spécifiques peuvent être accédées en utilisant une méthode publique comme
alternative. Par exemple, la valeur directe $_POST['user'] peut être accédée en appelant
getPost('user') sur l'objet de requête. Ceci inclue getQuery() pour rechercher des
éléments $$_GET, et getHeader() pour récupérer les entêtes de la requête.
![]() |
Données GET et POST |
|---|---|
Soyez prudent en accédant à des données de l'objet de requête car il n'est pas du tout filtré. Le routeur et le dispatcheur valident et filtrent les données pour leur usage, mais laissent les données intactes dans l'objet de requête. |
![]() |
Récupérer les données POST brutes, aussi ! |
|---|---|
|
A partir de la version 1.5.0, vous pouvez aussi les données POST brutes avec la méthode
Ceci est principalement utile pour accepter le contenu lors du développement des applications MVC de type REST. |
Vous pouvez également placer des paramètres d'utilisateur dans l'objet de requête en utilisant
setParam() et récupérer ces derniers en utilisant plus tard getParam(). Le routeur
se sert de cette fonctionnalité pour faire correspondre des paramètres de l'URI de la requête dans l'objet
requête.
![]() |
getParam() retrouve plus que les paramètres d'utilisateur |
|---|---|
|
Afin d'effectuer une partie de son travail, Si vous souhaitez rechercher seulement dans les valeurs que vous avez paramétrées avec
De plus, à partir de la version 1.5.0, vous pouvez verrouiller les sources de paramètres à
utiliser. |
![]() |
Caprices d'Apache |
|---|---|
|
Si vous utilisez le gestionnaire 404 d'Apache pour passer les requêtes entrantes au contrôleur
frontal, ou si vous utilisez le drapeau PT avec les règles de ré-écriture,
Cette classe étend la classe |
Zend_Controller_Request_Http permet à Zend_Controller_Router_Rewrite d'être
employé dans des sous-répertoires. Zend_Controller_Request_Http essayera de détecter
automatiquement votre base d'URL et de la régler en conséquence.
Par exemple, si vous maintenez votre index.php dans un sous-répertoire du serveur Web
appelé /projects/myapp/index.php, la base d'URL (rewrite base) devrait être réglé à
/projects/myapp. Cette chaîne sera alors dépouillée du début du chemin avant de calculer tous
les routes correspondantes. Ceci libère de la nécessité de l'ajouter au début de n'importe laquelle de vos
routes. Une route 'user/:username' correspondra à des URI comme
http://localhost/projects/myapp/user/martel et
http://example.com/user/martel.
![]() |
La détection d'URL est sensible à la casse |
|---|---|
La détection automatique d'URL de base est sensible à la casse, ainsi assurez vous que votre URL correspond à un nom de sous-répertoire dans le système de fichiers (même sur les machines Windows). S'il n'y en a pas, une exception sera levée. |
Si la base de l'URL est détectée de manière inexacte vous pouvez la surcharger avec votre propre
chemin de base grâce à la méthode setBaseUrl() soit de la classe de
Zend_Controller_Request_Http, soit de la classe de Zend_Controller_Front. La
méthode la plus facile est de la régler dans Zend_Controller_Front, qui le transmets dans
l'objet de requête. Exemple d'utilisation pour régler une base d'URL personnalisée :
/**
* Dispatche la requête avec une base d'URL réglé avec Zend_Controller_Front.
*/
$router = new Zend_Controller_Router_Rewrite();
$controller = Zend_Controller_Front::getInstance();
$controller->setControllerDirectory('./application/controllers')
->setRouter($router)
->setBaseUrl('/projects/myapp'); // affecte la base d'url
$response = $controller->dispatch();
getMethod() vous permet de déterminer le type de requête HTTP utiliser pour appeler la
ressource courante. De plus, différentes méthodes existent pour récupérer sous la forme de booléen le type
de requête réalisée :
isGet()isPost()isPut()isDelete()isHead()isOptions()
La principale utilisation est lors de la création des architectures MVC de type REST.
Zend_Controller_Request_Http possède une méthode rudimentaire pour détecter les requêtes
AJAX : isXmlHttpRequest(). Cette méthode parcourt les entêtes de la requête HTTP à la recherche
de X-Requested-With ayant la valeur "XMLHttpRequest" ; si celui-ci est trouvé, la méthode
retourne true.
Actuellement, on sait que cet entête est fourni par défaut par les bibliothèques JS suivantes :
Prototype/Scriptaculous (et les librairies dérivées de Prototype)
Yahoo! UI Library
jQuery
MochiKit
La plupart des librairies AJAX vous permettent d'envoyer vos propres entêtes de requête HTTP ; si
votre librairie n'envoie pas cet entête, ajoutez le simplement afin d'être sûr que la méthode
isXmlHttpRequest() fonctionne dans votre cas.
La classe de requête de base utilisée pour tous les objets de requête est la classe abstraite
Zend_Controller_Request_Abstract. Au minimum, elle définit les méthodes suivantes :
abstract class Zend_Controller_Request_Abstract
{
/**
* @return string
*/
public function getControllerName();
/**
* @param string $value
* @return self
*/
public function setControllerName($value);
/**
* @return string
*/
public function getActionName();
/**
* @param string $value
* @return self
*/
public function setActionName($value);
/**
* @return string
*/
public function getControllerKey();
/**
* @param string $key
* @return self
*/
public function setControllerKey($key);
/**
* @return string
*/
public function getActionKey();
/**
* @param string $key
* @return self
*/
public function setActionKey($key);
/**
* @param string $key
* @return mixed
*/
public function getParam($key);
/**
* @param string $key
* @param mixed $value
* @return self
*/
public function setParam($key, $value);
/**
* @return array
*/
public function getParams();
/**
* @param array $array
* @return self
*/
public function setParams(array $array);
/**
* @param boolean $flag
* @return self
*/
public function setDispatched($flag = true);
/**
* @return boolean
*/
public function isDispatched();
}
L'objet de requête est un conteneur pour l'environnement de la requête. La chaîne de contrôleur doit seulement savoir régler et récupérer le contrôleur, l'action, les paramètres facultatifs, et le statut dispatché. Par défaut, la demande recherchera ses propres paramètres en utilisant les clés de contrôleur ou d'action afin de déterminer le contrôleur et l'action.
Étendez cette classe, ou une de ses dérivés, quand vous avez besoin de la classe de requête pour interagir avec un environnement spécifique afin de récupérer des données pour les utiliser dans les tâches ci-dessus. Les exemples incluent l'environnement HTTP, un environnement CLI, ou un environnement PHP-GTK.
Search the Manual
Components
Languages Available
Translation Status Reports
View the current status report of Zend Framework manual translations.

![[Note]](/images/note.gif)