Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Separer code et presentation directement en PHP

8 réponses
Avatar
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

8 réponses

Avatar
loufoque
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

Avatar
blob
- 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

Avatar
Armel FAUVEAU
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.

Avatar
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.

Blob
Avatar
loufoque
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.

Avatar
loufoque
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é.


Avatar
Zouplaz
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...

Avatar
loufoque
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.