Version 1.0.0 - 2006/01/31 |
|
7.2 Les modèles ou contextes d’exécution
Jusqu’ici, vous n’avez pas beaucoup eu
l’occasion, d’observer des lignes de code
fonctionnelles d’une application Noas PHP. C’est
parce que ce type de framework, elles se trouvent dans des classes bien
particulières. En effet, Noas PHP est framework MVC2. Le
contrôle des modèles et des vues
s’effectue, par l’intermédiaire de la
plate-forme, à l’aide des classes de votre
environnement d’application. Le contrôle des mises
à jour des vues et changement d’état du
modèle est assuré par votre
l’interface. Bien évidemment, elle n’est
pas la seule à œuvrer. Les vues sont
représentées par les templates et les
modèles sont des classes très
spéciales. Les modèles en Noas PHP conserve des
informations propres à vos applications mais
également des informations systèmes. Ils peuvent
posséder des sous modèles et ainsi
créer une hiérarchie de type père et
fils. Précisons aussi que se sont eux qui gèrent
le comportement de vos applications. C’est pour cette raison
que lui donner le nom de modèle est un peu
réducteur. Nous lui attribuerons dés maintenant
le nom de contexte.
Il existe plusieurs sorte de contexte, pour les pages, les
fenêtres popup, les listes, etc. Ils dérivent tous
de la classe NoasDeviceContext. Vous aurez
généralement besoin que d’un contexte
par page, mais rien ne vous empêche de gérer des
pages composés.
Le premier rôle d’un contexte est
d’offrir à la template un contexte
d’exécution. Il va lui servir dans un premier
temps à afficher les données statiques et
dynamiques. Un contexte est indispensable, c’est à
dire que même s’il ne contient aucune information,
une page doit toujours en posséder un.
Vous aurez tout le loisir d’observer la puissance de ces
classes tout le long de cette partie.
Contexte de page simple
<?php
Noas::import("noas.web.context.NoasPageDeviceContext");
Noas::import("manager.businessobject.WoosInfo");
class ManagerConfigurationPage
extends NoasPageDeviceContext {
private $info;
function __construct() {
parent::__construct("ManagerConfiguration.tpl"
,"public/page/ManagerConfiguration".NOAS_PHP_EXTENSION);
$this->setInvalidPage(
"public/page/ManagerHome".NOAS_PHP_EXTENSION);
}
public function getInfo(){
if(empty($this->info)){
$this->info =
new WoosInfo();
}
return $this->info;
}
}
?>
Comme vous le constatez dans le listing
précédant, un contexte de page doit
posséder un template, une page d’accès
et une page d’invalidité. La template
représente la vue du contexte. Le chemin est
donné relativement au répertoire de template de
votre application. La page d’accès n’est
pas une information redondante. Il peut arriver
qu’à un certain niveau, la plate-forme
à besoin d’afficher la page, mais ne dispose que
de l’instance de contexte. La page
d’invalidité, quant à elle, sera
utilisée par la plate-forme en cas d’erreur ou
d’invalidité de session. Ces pages sont
données relativement au répertoire de
l’application. Nous vous conseillons d’utiliser la
constante NOAS_PHP_EXTENSION pour éviter les
dépendances.
Généralement, pour des raisons
d’efficacité, vous allez créer une
classe abstraite générique pour vos applications.
Cela vous donnera plus de souplesse lorsque vous voulez propager un
comportement à toutes vos pages. Sachez que les contextes de
popup fonctionne de manière similaire.
Contexte d'exécution générique
<?php
Noas::import("noas.web.context.NoasPageDeviceContext");
abstract class ManagerPageContext
extends NoasPageDeviceContext {
function __construct($template, $page) {
parent::__construct($template, $page);
$this->setInvalidPage(
"public/page/ManagerHome".NOAS_PHP_EXTENSION);
}
}
?>
Listing 7.2.3: Contexte d'exécution type
<?php
Noas::import("manager.context.ManagerPageContext");
Noas::import("manager.businessobject.WoosInfo");
class ManagerConfigurationPage extends ManagerPageContext {
private $info;
function __construct() {
parent::__construct("ManagerConfiguration.tpl"
,"public/page/ManagerConfiguration".NOAS_PHP_EXTENSION);
}
public function getInfo(){
if(empty($this->info)){
$this->info =
new WoosInfo();
}
return $this->info;
}
}
?>
|
© 2005 Réoka Djohou, tous droits réservés. |