Objets internes


1Présentation

Quand Temma exécute une requête, il instancie plusieurs objets qui sont nécessaires pour ce traitement, et les met à disposition des contrôleurs et des plugins.

Ces objets sont de type :

  • \Temma\Base\Session : gestion des sessions utilisateurs (voir la documentation dédiée).
  • \Temma\Web\Config : récupération des informations de configuration.
  • \Temma\Web\Request : récupération et modification des données constituant la requête.
  • \Temma\Web\Response : contrôle de certains paramètres de réponse.

2Config

2.1Config : présentation

Cet objet permet d'accéder à la configuration du site, et à la modifier le temps de la requête courante.

L'objet de configuration est disponible dans les contrôleurs et les plugins en écrivant :

$this->_config

Dans les autres objets gérés par le composant d'injection de dépendances, l'objet de configuration est accessible en écrivant :

$this->_loader->config

2.2Config : attributs en lecture-écriture

  • appPath : (string) chemin vers la racine du projet
  • etcPath : (string) chemin vers le répertoire 'etc' du projet
  • logPath : (string) chemin vers le répertoire 'log' du projet
  • tmpPath : (string) chemin vers le répertoire 'tmp' du projet
  • includesPath : (string) chemin vers le répertoire 'lib' du projet
  • controllersPath : (string) chemin vers le répertoire 'controllers' du projet
  • varPath : (string) chemin vers le répertoire 'var' du projet
  • webPath : (string) chemin vers le répertoire 'www' du projet
  • routes : (array) routage basique
  • plugins : (array) liste des plugins
  • enableSessions : (bool) indique si les sessions sont activées
  • rootController : (string) nom du contrôleur racine
  • defaultController : (string) nom du contrôleur par défaut
  • proxyController : (string) nom du contrôleur proxy
  • defaultNamespace : (string) namespace par défaut des contrôleurs
  • defaultView : (string) nom de la vue par défaut
  • loader : (string) nom de l'objet utilisé comme composant d'injection de dépendances
  • loaderAliases : (?array) tableau associatif contenant les alias de nommage gérés par le loader
  • loaderPrefixes : (?array) tableau associatif contenant les préfixes de nommage gérés par le loader
  • logManager : (null|string|array) nom du ou des gestionnaires de log
  • logLevels : (null|string|array) seuils de log
  • bufferingLoglevels : (null|string|array) seuils de log bufferisés

2.3Config : gestion des configurations étendues

La méthode xtra() permet de lire une configuration étendue :

// récupération de la configuration étendue "x-user" entière
$conf = $this->_config->xtra('user');

// récupération de la clé "login"
$login = $this->_config->xtra('user', 'login');

// récupération de la clé "login", avec une valeur par défaut
$login = $this->_config->xtra('user', 'login', 'admin');

La méthode setXtra() permet de définir une clé dans une configuration étendue :

// définition de la clé "login" de la configuration étendue "x-user"
$this->_config->setXtra('user', 'login', 'sysop');

3Request

3.1Request : présentation

La gestion de la requête est rarement utilisée dans les contrôleurs applicatifs. Par contre, elle peut être utile dans des plugins qui veulent contrôler le flux d'exécution en changeant les caractéristiques de la requête.

L'objet de requête est disponible dans les contrôleurs et les plugins en écrivant :

$this->_request

Dans les autres objets gérés par le composant d'injection de dépendances, l'objet de requête est accessible en écrivant :

$this->_loader->request

3.2Request : méthodes de lecture

// savoir si c'est une requête AJAX
$ajax = $this->_request->isAjax();

// récupération du path info
$pathInfo = $this->_request->getPathInfo();

// récupération de la méthode (GET, POST…)
$method = $this->_request->getMethod();

// récupération du nom du contrôleur
$ctrl = $this->_request->getController();

// récupération du nom de l'action
$action = $this->_request->getAction();

// récupération du nombre de paramètres
$nbr = $this->_request->getNbrParams();

// récupération de la liste des paramètres
$params = $this->_request->getParams();

// récupération du premier paramètre
$p1 = $this->_request->getParam(0);
// récupération du 2e paramètre, avec une valeur par défaut
$p2 = $this->_request->getParam(1, 'toto');

// récupération du chemin depuis la racine du site
$path = $this->_request->getSitePath();

3.3Request : méthodes d'écriture

// définition de la méthode
$this->_request->setMethod('POST');

// définition du contrôleur
$this->_request->setController('user');
// conseillé : mise à jour de la variable de template associée
$this['CONTROlLER'] = 'user';

// défintion de l'action
$this->_request->setAction('list');
// conseillé : mise à jour de la variable de template associée
$this['ACTION'] = 'list';

// définition de la liste des paramètres
$this->_request->setParams(['toto', 'titi']);

// définition du deuxième paramètre
$this->_request->setParam(1, 'tata');

4Response

4.1Response : présentation

Cet objet permet de récupérer et manipuler les informations qui sont utilisées pour générer la réponse envoyée par Temma au navigateur.

L'objet de réponse est disponible dans les contrôleurs et les plugins en écrivant :

$this->_response

Dans les autres objets gérés par le composant d'injection de dépendances, l'objet de réponse est accessible en écrivant :

$this->_loader->response

4.2Response : méthodes de lecture

// récupération de l'URL de redirection (ou null)
$url = $this->_response->getRedirection();

// récupération du code de redirection (301 ou 302)
$code = $this->_response->getRedirectionCode();

// récupération du code d'erreur HTTP (ou null)
$httpError = $this->_response->getHttpError();

// récupération du code de retour HTTP
$httpCode = $this->_response->getHttpCode();

// récupération du nom de la vue définie
$view = $this->_response->getView();

// récupération du préfixe de templates
$prefix = $this->_response->getTemplatePrefix();

// récupération du template défini (ou null)
$tpl = $this->_response->getTemplate();

// récupération de la liste des en-têtes HTTP
$headers = $this->_response->getHeaders();

// récupération de toutes les variables de template définies
$vars = $this->_response->getData();
// récupération d'une variable de template
$var = $this->_response->getData('var');
// récupération d'une variable de template, avec une valeur par défaut
// (si la valeur par défaut est utilisée, elle est ajoutée dans les variables de template)
$var = $this->_response->getData('var', 'default');
// récupération d'une variable de template, avec une fonction anonyme
// pour définir la valeur par défaut
$var = $this->_response->getData('var', function() {
    return 'default';
});
// idem au précédent, en fournissant un paramètre à la fonction anonyme
$var = $this->_response->getData('var', function($param) {
    return $param * 2;
}, $autreValeur);

4.3Response : méthodes d'écriture

// définition d'une redirection temporaire (code 302)
$this->_response->setRedirection($url);
// définition d'une redirection permanente (code 301)
$this->_response->setRedirection($url, true);

// définition d'un code d'erreur HTTP
$this->_response->setHttpError(500);

// définition d'un code de retour HTTP
$this->_response->setHttpCode(404);

// définition du nom de la vue
$this->_response->setView('\Temma\Views\Json');
$this->_response->setView('~Json');
// désactivation du traitement de la vue
$this->_response->setView(false);

// ajout d'une variable de template
$this->_response['key'] = 'value';
// effacement d'une variable de template
unset($this->_response['key']);
// redéfinition de toutes les variables de template
$this->_response->setData([
    'key1' => 'value1',
    'key2' => 'value2',
]);
// ajout de plusieurs variables de template
$this->_response->addData([
    'key3' => 'value3',
    'key4' => 'value4',
]);
// effacement de toutes les variables de template
$this->_response->clearData();

// définition du préfixe de template
$this->_response->setTemplatePrefix($prefix);

// définition du template
$this->_response->setTemplate('article/voir.tpl');

// ajoute un en-tête HTTP
$this->_response->header('Content-Type: application/pdf');