8791 sujets

Développement web côté serveur, CMS

Pages :
Modérateur
(reprise du message précédent)

Alomon a écrit :
Par exemple, lorsqu'un utilisateur se logge sur le site, je définis une constante appelée NAME qui contient son nom. Elle ne doit pas être modifiée, au risque de perdre la relation avec les données le concernant.

Oh, ce sont donc des constantes dynamiques. Mais pourquoi utiliser des constantes???
Au final tu souhaites mettre en place un système de placeholder. On préfixe les placeholder dans un texte généralement par des symboles incongrus: ( :MAVAR, $MAVAR, %MAVAR, #[MAVAR], etc.) Pour limiter les risques que l'utilisateur désires introduire un texte qui se trouve être un placeholder:
a écrit :

NOM: NOM

En fait dans ton code, tu n'en a plus vraiment besoin des constantes:

// define(''.$name.'',''.$value.'') cette ligne horrible ne sert à rien! (initialiser une constante avec une variable, c'est le comble!
array $CONSTANT_NAMES[] = $name;
array $CONSTANT_VALUES[] = $value;
Alomon a écrit :
Le formulaire sera sur une partie Administration du site, donc réservé à ses administrateurs. Le but est de leur permettre de personnaliser ce qui est affiché sur une des pages du site (qui, elle, sera publique), tout en leur mettant à disposition des constantes prédéfinies.

Par exemple, lorsqu'un utilisateur se logge sur le site, je définis une constante appelée NAME qui contient son nom. Elle ne doit pas être modifiée, au risque de perdre la relation avec les données le concernant.


Ok, je comprends maintenant. Smiley smile

Effectivement tu peux utiliser des constantes. Personnellement j'utilise un registre (un objet sous forme de Singleton), je trouve ça plus logique et plus pratique, mais c'est vrai que ça marche aussi avec des constantes mais c'est moins souple.

Alomon a écrit :

Je veux alors donner la possibilité aux administrateurs de pouvoir faire apparaitre la valeur de cette constante sur la page qu'il personnalise.

Edit : en gros, oui, c'est comme un système de template avec des valeurs prédéfinies. Si tu as d'autres techniques plus efficaces pour arriver au même résultat, je suis preneur Smiley cligne


Oui je fais ça sur mes sites pour, par exemple, permettre aux admins de personnaliser les emails envoyés par le site tout en gardant des valeurs dynamiques dans les templates. Pour ça j'utilise la technique que t'a expliqué kustolovic. Dans mes templates l'utilisateur peut utiliser des valeurs sous la forme {%user_name%} et après je fais un chercher/remplacer dans les templates au moment de leur utilisation pour remplacer ces valeurs par leurs valeurs dynamique.

Un exemple de template :


<p>Bonjour {%user_name%},</p>
<p>Vous venez de vous inscrire sur notre site, voici un rappel de vos identifiants :</p>
<p>
Identifiant : {%user_email%}<br />
Mot de passe : {%user_password%}
</p>
...
OK, je comprends. En revanche, j'ai l'impression que ça ne m'empêche pas d'utiliser des constantes dans le reste du code, étant donné qu'elles ne servent pas qu'à ça...

Ce que je pense donc faire :
- continuer à utiliser mes constantes pour s'assurer qu'elles ne pourront pas être modifiées (le site développé est un site générique qui sera remis dans les mains d'autres développeurs plus tard, donc autant ne pas prendre de risques)
- dans le formulaire, proposer à l'utilisateur d'utiliser des placeholders
- créer un tableau faisant la liaison entre les placeholders et leurs valeurs (a priori, que leurs valeurs soient celles de constantes ou de variables, peu importe)
- lors de l'affichage de la page personnalisée, remplacer les placeholders par leurs correspondances trouvées dans le tableau précédent

Ça me semble assez propre, non ?
Modérateur
Alomon a écrit :
OK, je comprends. En revanche, j'ai l'impression que ça ne m'empêche pas d'utiliser des constantes dans le reste du code, étant donné qu'elles ne servent pas qu'à ça...

Effectivement, il faut que tu génères deux tableaux pour les remplacements. Tu peux générer ces tableaux à partir de variables, de constantes, de valeurs fixes ou encore de propriétés.

Alomon a écrit :
- continuer à utiliser mes constantes pour s'assurer qu'elles ne pourront pas être modifiées (le site développé est un site générique qui sera remis dans les mains d'autres développeurs plus tard, donc autant ne pas prendre de risques)

jb_gfx a parlé de singletons, c'est en effet dans le travail collaboratif que travailler avec des objets devient extrêmement utile. Penses-y.
En effet, le choix de la programmation objet aurait certainement été meilleur ici. Cependant, je ne suis pas encore très à l'aise avec le concept appliqué au PHP (j'ai seulement fait de la prog objet en C, il y a quelques années, j'ai tout oublié ^^) et j'ai des contraintes de temps qui ne m'auraient pas permis d'arriver au bout en reprenant toutes les notions.

Je retiens l'idée pour une évolution future ou un autre projet Smiley cligne

Merci encore de votre aide !
Pages :