OVH Cloud OVH Cloud

Separer le code PHP du reste

24 réponses
Avatar
UniversZen
Bonjour à tous,

Je me suis lancé dans l'apprentissage de PHP il y a quelques mois mais sans
trop de temps à y consacer malheureusement ...
Mais j'avance et c'est le principal ! ;-)

Je voudrais savoir comment vous procéder pour bien séparer la forme (en gros
html+css) du fond (le code PHP) ?

Je suis en effet un peu effrayé à la vue de mes pages (qui ressemblent à
celles proposées en exemple sur de nombreux sites) : html, php et javascript
se mélangent allégrement et c'est super bordélique !
Quant à corriger et maintenir des pages comme ça ... cauchemar !
Alors vous, les pros, vous faites comment ?

Merci pour votre aide.

Si vous avez des liens vers des tutoriaux ou autre je suis preneur !

A+.

--
UniversZen

10 réponses

1 2 3
Avatar
Jean-Francois Ortolo
Bonjour Monsieur

Vous pouvez toujours faire des include à partir de scripts PHP, donc
inclure des scripts PHP, des pages HTML, et des script JS.

Dans des pages HTML, vous pouvez aussi inclure ces type de fichiers,
avec une instruction qui ressemble à celà:

<!--#include file="script.php"-->

Vous pouvez donc inclure tout type de fichier dans tout type de
fichier, et donc adopter une architecture arborescente modulaire, et
vous y tenir.

Celà dit, je ne sais pas ce que Monsieur John Gallet va dire de mon
commentaire... :)

Bien à vous.

Jean Francois Ortolo

--
Mon site donne des Statistiques
et des Historiques Graphiques gratuits
sur les Courses de Chevaux du PMU.
http://www.ortolojf-courses.com
Avatar
Eric Guirbal
UniversZen wrote:

Bonjour à tous,

Je me suis lancé dans l'apprentissage de PHP il y a quelques mois mais
sans trop de temps à y consacer malheureusement ...
Mais j'avance et c'est le principal ! ;-)

Je voudrais savoir comment vous procéder pour bien séparer la forme (en
gros html+css) du fond (le code PHP) ?



Bonjour,

Je ne suis pas sur que cela soit bien dit. L'affichage des données est
assurée par le (X)HTML (fond) + CSS (forme), quant au PHP il assure le
traitement et l'accès aux données. Cela dit je comprends votre problème (je
débute et j'y suis confronté). Je vous conseille de lire l'article suivant:
Serge Tahe, Méthodologie de développement MVC d'une application WEB/PHP,
ftp://ftp-developpez.com/tahe/fichiers-archive/progwebphpmvc-250305.pdf

-- Eric Guirbal

Avatar
CrazyCat
UniversZen wrote:
Je voudrais savoir comment vous procéder pour bien séparer la forme (en gros
html+css) du fond (le code PHP) ?
Je suis en effet un peu effrayé à la vue de mes pages (qui ressemblent à
celles proposées en exemple sur de nombreux sites) : html, php et javascript
se mélangent allégrement et c'est super bordélique !
Quant à corriger et maintenir des pages comme ça ... cauchemar !
Alors vous, les pros, vous faites comment ?


Je ne suis pas concerné, n'étant pas un pro :)

Quoi qu'il en soit, j'ai plusieurs méthodes:
1) user des require() et include() qui me permettent de créer les
fonctions utiles dans des fichiers externes.
Avec une bonne organisation, tu peux faire des fichiers logiques qui
regrouperont par exemple tout ce qui concerne les accès base, ce qui
concerne le formatage des données, ...

2) j'utilise aussi des includes pour générer les parties html communes
des pages. Ceux-ci peuvent soit afficher directement le html soit créer
des variables à utiliser.

3) le fichier "principal" est partagé en plusieurs parties:
- définition des variables propres à la page
- appels des fichiers externes
- code PHP propre à la page
- code HTML (soit provenant du (2) soit créé directement

Il existe bien sur d'autres méthodes, comme l'utilisation de templates,
mais je ne connais pas trop ce principe.

La seule chose que je considère comme mauvaise est de créer directement
du code html en fonction de conditions php:
<? if ($variable == "toto) { ?>
<-- code html -->
?> } else { ?>
<-- autre code html -->
<? } ?>

Ceci est impossible à bien suivre
--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net

Avatar
CrazyCat
Jean-Francois Ortolo wrote:
Vous pouvez toujours faire des include à partir de scripts PHP, donc
inclure des scripts PHP, des pages HTML, et des script JS.


Oui, bien que pour les javascripts, il suffit de la vraie balise html:
<script language="javascript" src="./repertoire/fichier.js"></script>

Dans des pages HTML, vous pouvez aussi inclure ces type de fichiers,
avec une instruction qui ressemble à celà:
<!--#include file="script.php"-->


Quelle horreur!!! des appels SSI quand on est en PHP?
Je ne qualifierais pas ça d'abomination, mais je n'en voit pas
l'interet: si du php est inclus, la page est donc parsée comme du php,
alors pourquoi ne pas utiliser des appels PHP?

Les appels SSI sont, amha, la solution désespérée.

Celà dit, je ne sais pas ce que Monsieur John Gallet va dire de mon
commentaire... :)


Je ne préfère pas savoir ce que john dira de cette hérésie, pour ma part
je suet muet d'effroi (heureusement, je tape avec les doigts, je ne
parle pas)

--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net

Avatar
bruno modulix
Eric Guirbal wrote:

Je vous conseille de lire l'article suivant:
Serge Tahe, Méthodologie de développement MVC d'une application WEB/PHP,
ftp://ftp-developpez.com/tahe/fichiers-archive/progwebphpmvc-250305.pdf



... qui est AMHA un exemple typique d'enculage de mouche^Mcomplication
inutile à la Java.

Ce genre de construction est compréhensible quand on a un long running
process et un langage tellement lourd que XML paraît léger en
comparaison, mais s'avère AMHA peu adapté au modèle PHP.

<troll>
Enfin bon, si votre boss juge votre productivité au nombre de lignes de
codes et au nombre de buzzwords dans la doc, pourquoi pas ?
</troll>

Mes deux centimes...
--
bruno desthuilliers
ruby -e "print ''.split('@').collect{|p|
p.split('.').collect{|w| w.reverse}.join('.')}.join('@')"

Avatar
bruno modulix
UniversZen wrote:
Bonjour à tous,

Je me suis lancé dans l'apprentissage de PHP il y a quelques mois mais sans
trop de temps à y consacer malheureusement ...
Mais j'avance et c'est le principal ! ;-)

Je voudrais savoir comment vous procéder pour bien séparer la forme (en gros
html+css) du fond (le code PHP) ?


Il ne s'agit pas de séparer le html du php, mais de séparer la logique
applicative (traitements, PHP seulement) de la logique de présentation
(affichage, PHP + HTML + ...).

Je suis en effet un peu effrayé à la vue de mes pages (qui ressemblent à
celles proposées en exemple sur de nombreux sites)


Je crains le pire :-/

: html, php et javascript
se mélangent allégrement et c'est super bordélique !


Oui, c'est courant en PHP. Hélas.

Quant à corriger et maintenir des pages comme ça ... cauchemar !
Alors vous, les pros, vous faites comment ?


MVC.

Le principe du MVC (Model/View/Controller, ou Modèle/Vue/Controleur en
français) à la sauce web:

- une bibliothèque de fonctions et/ou classes représentant les 'objets'
(pas forcément au sens OOP) du domaine. C'est le 'Modèle'. Cette partie
ne sait *rien* des autres, et peut être utilisée indépendemment des autres.
- des pages HTML + PHP (+ ...) qui affichent les objets du Modèle. Il
n'y a aucun traitement dans ces pages, le PHP ne sert que pour gérer la
logique de *présentation* (substition de variables, boucles, inclusions,
affichages conditionnels etc). Ce sont les 'Vues'.
- des scripts PHP chargés d'analyser les requêtes, d'aller chercher les
objets du Modèle concernés, d'appeler les traitements requis, de
déterminer la vue qui va bien, et de lui passer les données à afficher.

Il y a bien sûr plusieurs façons d'agencer tout ça. Une des plus simples
consiste à utiliser un controleur par 'page' (ou section, ou...) du
site. Ce controleur analyse la requête, et, une fois les traitements
nécessaires effectués et les variables qui vont bien positionnées,
inclus la vue.

exemple simpliste, Q&D, pas sécurisé ni rien...:

# modele_user.php
<?php
function auth_user($login, $passwd) {
if ($login == 'machin' && $passwd == 'thx1138') {
return Array('name'=>'Machin',
'login'=>'machin',
'passwd'=>'thx1138',
'mail' => '',
'role' => 'member' );
}
else {
return NULL;
}
}
?>


# vue_login_form.php
<?php
include_once('header.php');

if (! empty($login_error)) {
echo "<hr><b>Erreur d'authentification</b><br>$login_error<hr>";
}
?>
<form name="login" method="post" action="login.php">
login:
<input type="text" name="login" value="<?php echo $login;?>"><br>
password:
<input type="password" name="password"><br>
<input type="submit" value="valider">
</form>
<?php include_once('footer.php'); ?>


# vue_login_ok.php
<?php include_once('header.php'); ?>
Bonjour, <?php echo $user['name']; ?>
<?php include_once('footer.php'); ?>


# login.php (le controleur)
<?php
include_once ('modele_user.php');

$errs = Array();
if (empty($_POST['valider'])) {
include('vue_login_form.php');
}
else {
if (empty($_POST['login'])) {
$errs[] = "renseignez le login, SVP";
}
if (empty($_POST['password'])) {
$errs[] = "renseignez le mot de passe, SVP";
}
if (empty($errs) {
$user = auth_user($_POST['login'], $_POST['password']);
if (is_null($user)) {
$errs[] = "login/password inconnu";
}
}
if ($errs) {
$errs = implode("<br>", $errs);
include('vue_login_form.php');
}
else {
include('vue_login_ok.php');
}
}
?>

Généralement (et historiquement), le principe du MVC est lié à la prog
objet, mais comme tu peux le voir, ce n'est pas un impératif...

Si vous avez des liens vers des tutoriaux ou autre je suis preneur !
John (Gallet) a publié un document pas mal. Je n'ai pas l'url sous la

main, mais google devrait te trouver ça assez vite.

HTH
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"

Avatar
ftc
Eric Guirbal wrote:


Je vous conseille de lire l'article suivant:
Serge Tahe, Méthodologie de développement MVC d'une application WEB/PHP,
ftp://ftp-developpez.com/tahe/fichiers-archive/progwebphpmvc-250305.pdf




... qui est AMHA un exemple typique d'enculage de mouche^Mcomplication
inutile à la Java.

Ce genre de construction est compréhensible quand on a un long running
process et un langage tellement lourd que XML paraît léger en
comparaison, mais s'avère AMHA peu adapté au modèle PHP.


C'est quand même très pratique d'utiliser un framework MVC quand
l'application commence à devenir un minimum complexe et ceci même en
PHP. D'autant qu'on force la séparation du code et de la présentation,
ce qui est à mon avis une très bonne chose.

Une fois le fonctionnement du framework assimilé, le complication est
effacée.

MVC existait avant Java et est utilisé dans un bon nombre de langages,
même en BASIC.


<troll>
Enfin bon, si votre boss juge votre productivité au nombre de lignes de
codes et au nombre de buzzwords dans la doc, pourquoi pas ?
</troll>


Un framework MVC comme Copix permet de réduire la quantité de code à
écrire et réduit certaines taches répétitives, il lui manque juste un
générateur de formulaires et le bonheur serait total.


Avatar
Jean-Francois Ortolo
Bonjour Monsieur

Voir mes réponses ci-dessous.

Jean Francois Ortolo

CrazyCat wrote:
Jean-Francois Ortolo wrote:

Vous pouvez toujours faire des include à partir de scripts PHP,
donc inclure des scripts PHP, des pages HTML, et des script JS.



Oui, bien que pour les javascripts, il suffit de la vraie balise html:
<script language="javascript" src="./repertoire/fichier.js"></script>



Certes.
Pour passer des variables PHP à des scripts JavaScript, il me semble
qu'il faut nécéssairement passer par un script en PHP contenant des
instruction echo ( ou print ), contenant le code HTML appelant le script
JS adéquat.

Dans des pages HTML, vous pouvez aussi inclure ces type de
fichiers, avec une instruction qui ressemble à celà:
<!--#include file="script.php"-->



Quelle horreur!!! des appels SSI quand on est en PHP?
Je ne qualifierais pas ça d'abomination, mais je n'en voit pas
l'interet: si du php est inclus, la page est donc parsée comme du php,
alors pourquoi ne pas utiliser des appels PHP?



Je disais: "Dans des pages HTML".

Il est vrai que l'on peut toujours se ramener à une racine
d'arborescence qui soit un script PHP, mais n'oublions pas que la page
d'accueil, elle, est le plus souvent une page HTML: index.html

Et puis, il ne faut rien exagérer: Je pense qu'il serait vain de
vouloir à tout prix modulariser ad onf un site PHP/HTML/JS de façon
définitive, compte tenu de la maintenance corrective, qui va
probablement "chambouler" aussi l'architecture.

Il est parfois plus facile de maintenir un site que l'on connait
bien, dont l'architecture n'est pas trop structurée, mais donc on
connait la structure, qui est suffisamment claire, plutôt que de vouloir
à tout prix faire du parfait.

En la matière, je crois plus au "trial and error" et à la rétroaction
des essais sur la conception, qu'à la conception pure. Il peut y avoir
des techniques de conception, qui complexifient fortement la
maintenance, ou en tout cas supposent que le mainteneur est pafaitement
au fait de la technique utilisée, ce qui réduit les possibilités de
changement de mainteneur.

L'apparence et la réalité ? :)

Bien à vous.

Jean Francois Ortolo

--
Mon site donne des Statistiques
et des Historiques Graphiques gratuits
sur les Courses de Chevaux du PMU.
http://www.ortolojf-courses.com


Avatar
Zouplaz
"UniversZen" wrote in
news:42de19a5$0$25035$:

Je voudrais savoir comment vous proc‚der pour bien s‚parer la forme
(en gros html+css) du fond (le code PHP) ?


Bin moi ma principale préoccupation ce sont les outils de "backoffice", le
côté applicatif quoi - je me suis constitué une sorte de framework avec une
panoplie de classes qui définissent une page, un formulaire, un champ de
formulaire, une table, un contrôle, un conteneur, etc etc...

Du coup j'ai plus une seule ligne de HTML dans mes codes sources PHP...

Je suis d'ailleurs en train de réfléchir à une solution plus globale qui me
permettrait la même approche pour le côté site public (forcément c'est un
peu plus compliqué car la forme est beaucoup plus libre alors que pour les
backoffice les listes et les formulaires sont mon pain quotidien)

Couplé à un usage prononcé des feuilles de styles je suis pas trop
mécontent du résultat... En tout cas je le fais évoluer depuis 2 ans et ça
m'a beaucoup servi (puisqu'en plus je peux abuser du copier/coller entre
différents projets) - je compte d'ailleurs aller beaucoup plus loin à
l'occasion du prochain projet et mieux intégrer javascript par exemple

Avatar
Thierry
Bonjour à tous,

Je me suis lancé dans l'apprentissage de PHP il y a quelques mois mais sans
trop de temps à y consacer malheureusement ...
Mais j'avance et c'est le principal ! ;-)

Je voudrais savoir comment vous procéder pour bien séparer la forme (en gros
html+css) du fond (le code PHP) ?

Je suis en effet un peu effrayé à la vue de mes pages (qui ressemblent à
celles proposées en exemple sur de nombreux sites) : html, php et javascript
se mélangent allégrement et c'est super bordélique !
Quant à corriger et maintenir des pages comme ça ... cauchemar !
Alors vous, les pros, vous faites comment ?


Je pense que ce que tu recherches est un "moteur de template". Il y a
plusieurs post sur ce newsgroup. Dans les plus connus : Smarties,
Vtemplate, Xtemplate, phplib, tpln, etc. Mais perso aucun ne me
convenais à 100% donc je suis revenu à des solutions hibrides de tpln et
de php conditionnel (juste des if et des for) dans les fchiers de
template...

1 2 3