Separer code et presentation directement en PHP

Le
blob
Point de départ :
- Smarty a raison en séparant logique de présentation et logique de
l'application
- Smarty utilise son propre language pour faire ce que PHP sait déjà faire

Ligne d'arrivée :
- Garder cette logique sans utiliser Smarty
- Implémenter un système de cache

Il me manque une partie du chemin entre mon point de départ et la ligne
d'arrivée
Des idées ?


Blob
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
loufoque
Le #585959
blob wrote:
Des idées ?


- Utiliser un système de templates qui n'utilise pas un langage propre
mais php lui-même.
- Ne pas utiliser de système de templates

blob
Le #585957
- Utiliser un système de templates qui n'utilise pas un langage propre
mais php lui-même.


C'est l'objet du post précédent à propos de Savant et SimpleT.

- Ne pas utiliser de système de templates


C'est l'objet de ce post. Comment séparer malgré tout logique de
présentation et logique de l'application ? Avec un système à base
d'include()s ? Un script s'occupe de tout ce qui n'est pas lié directement à
la présentation et include un script de présentation ? Bref, je cherche à
batir un petit (tout petit) framework. Est-ce que vous avez des exemples de
code ou d'architecture ?

Blob

Armel FAUVEAU
Le #585698
Bonjour,

Il me manque une partie du chemin entre mon point de départ et la ligne
d'arrivée...
Des idées ?


1 - PHP est déjà un système de templates (c) Rasmus. Et de loin, le plus
efficace que l'on puisse trouver du reste,
2 - A la limite, utiliser XSLT. C'est fait pour ca et c'est universel (i.e
indépendant du langage). L'approche sera donc la même en Python, Java, PHP
ou Cobol Objet.

Armel.

blob
Le #585691
Ma question est sûrement mal exprimée. Je suis d'accord, PHP est un système
de templates. Je pense qu'il est important, sur certains projets en tout
cas, de séparer la présentation et le code. Et je veux faire cette
séparation en utilisant PHP.

Comment organisez-vous vos scripts les uns par rapport aux autres pour
effectuer cette séparation ? Quelle est votre manière de faire aux uns et
aux autres ? D'organiser vos include()s etc.

Blob
loufoque
Le #585692
Armel FAUVEAU wrote:
2 - A la limite, utiliser XSLT. C'est fait pour ca et c'est universel (i.e
indépendant du langage). L'approche sera donc la même en Python, Java, PHP
ou Cobol Objet.


Je vois pas trop d'intérêt à utiliser XSLT pour génerer des pages webs,
étant donné qu'il faut partir de données XML.
Donc autant générer des données XHTML plutôt qu'XML.

Enfin je dis ça mais personnellement je n'ai jamais vu une situation qui
justifiait l'utilisation d'XSLT. Surtout que je trouve ça compliqué et
lourd, mais bon c'est un autre problème.

loufoque
Le #585694
blob wrote:
- Ne pas utiliser de système de templates
Comment séparer malgré tout logique de

présentation et logique de l'application ?


En utilisant les CSS pour la présentation et en générant avec la logique
de l'application des données XHTML sémantiques.
Enfin ce n'est qu'une possibilité.


Zouplaz
Le #591252
blob - :

Ma question est sûrement mal exprimée. Je suis d'accord, PHP est un
système de templates. Je pense qu'il est important, sur certains
projets en tout cas, de séparer la présentation et le code. Et je veux
faire cette séparation en utilisant PHP.

Comment organisez-vous vos scripts les uns par rapport aux autres pour
effectuer cette séparation ? Quelle est votre manière de faire aux uns
et aux autres ? D'organiser vos include()s etc.



Moi, au moins pour les scripts "back office", j'ai un panoplie de classes
maison qui me permettent de ne plus générer une seule ligne de code xhtml.

Un exemple :

function dispForm()
{

$page = new xhtmlPage("Stats");
$CnxDB = new dbConnection();

setupPage($page);
$form = new Form("FORM1","Statistiques");

$mnClass = new ctlSelect("CLASS");
$mnClass->addItem("NONE","Aucune");
$mnClass->addItem("CATMO","Catégories de maitres d'ouvrages");
$mnClass->addItem("SPEC","Spécialité de travaux");

// Champs

$f0 = new formField("Classification");
$f0->addObjects($mnClass);

$hdAction = new ctlHidden("ACTION","DISPSTATS");

$form->addObjects($f0);
$form->addControl($hdAction);
$form->disableCancel();

$page->addObjects($form);
$page->draw();
$CnxDB->close();
}

Depuis que j'utilise et peaufine mon bidule je gagne pas mal de temps...

Par contre c'est inexploitable pour la partie "publique", un site web donc.
Du moins pas sans un énorme boulot de réecriture et d'amélioration...

loufoque
Le #590996
Zouplaz wrote:

Moi, au moins pour les scripts "back office", j'ai un panoplie de classes
maison qui me permettent de ne plus générer une seule ligne de code xhtml.
Autant utiliser DOM, qu'on peut étendre si besoin.


Publicité
Poster une réponse
Anonyme