L'objet RequêteIntroductionL'objet requête est un objet simple de valeur qui est passé entre Zend_Controller_Front et le routeur, le distributeur, 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.
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 distribution, avant que le routage ne se produise. Il est passé à travers chaque objet dans la chaîne de distribution. 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. Les requêtes HTTPAccéder aux données de la requêteZend_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() et getParam() pour régler ou pour récupérer des paramètres d'utilisateur.
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 en-têtes de la requête.
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.
Base de l'URL et sous-dossiersZend_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
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 :
Déterminer le type de la requêtegetMethod() 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 :
La principale utilisation est lors de la création des architectures MVC de type REST. Détecter les requêtes AJAXZend_Controller_Request_Http possède une méthode rudimentaire pour détecter les requêtes AJAX : isXmlHttpRequest(). Cette méthode parcourt les en-tê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 en-tête est fourni par défaut par les bibliothèques JS suivantes :
La plupart des librairies AJAX vous permettent d'envoyer vos propres en-têtes de requête HTTP ; si votre librairie n'envoie pas cet en-tête, ajoutez le simplement afin d'être sûr que la méthode isXmlHttpRequest() fonctionne dans votre cas. Sous-classer l'objet RequêteLa 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 :
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 distribué. 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.
|
|