2011-05-13 5 views
1

J'ai entendu dire que c'était une mauvaise pratique de faire écho au contenu HTML dynamique via PHP. Mais quelles sont les alternatives, au cas où vous en avez besoin, comme, f.e. un menu de navigation sur un site Web, répété dans chaque page?Contenu HTML dynamique via PHP

+0

Où avez-vous entendu est une mauvaise pratique? –

Répondre

4

Je suppose que cela a été conçu comme un conseil contre le "codage en dur" des vues dans vos scripts PHP, et plutôt séparer vos préoccupations en introduisant quelque chose comme une approche MVC. Les gains en termes de maintenabilité et de clarté du code sont importants et, à cet égard, c'est un bon conseil.

C'est vraiment juste une abstraction, cependant. À un certain point, PHP doit afficher le code HTML dans le navigateur. Donc, la sortie de contenu HTML dynamique fait partie intégrante de PHP, mais il y a des façons pires et meilleures de le faire, et les chaînes HTML codées en dur dans les instructions echo ne sont généralement pas la meilleure façon de le faire. Introduisez un moteur de gabarit, des vues séparées et une logique métier, et vous vous en sortirez probablement mieux.

6

C'est la raison de l'existence de PHP.

Vous avez mal entendu.

+0

bien, je veux dire des constructions comme la fonction menu() {echo 'du html ici'; } Vous dites que de telles choses vont bien? =) – Arnthor

+0

@Nordvind: Il existe des approches à la fois préférées et découragées pour sortir du HTML à partir de PHP. Cependant, cette distinction mise à part, le fait est que PHP est conçu pour le faire d'une manière ou d'une autre. –

+0

@Nordvind: S'il vous plaît, éditez votre question pour être plus précis, si vous vouliez réellement poser des questions sur les mécanismes et les approches de sortie spécifiques. –

0

il est toujours préférable de diviser la présentation et l'écriture, par exemple au lieu d'utiliser le code quelque chose comme ça

echo "<title>$title</title>"; 

vous pouvez utiliser

<title><?php echo $title; ?></title> 

considèrent le code html division de php, garder php uniquement pour retourner un ensemble de résultats pas html réel. De cette façon, il sera plus lisible IMO. Peu importe la façon dont vous l'adoptez, PHP a été conçu pour renvoyer du texte et c'est ce que vous faites.

3

Ce n'est pas une mauvaise pratique de l'écho du contenu dans HTML, il est une mauvaise pratique d'effectuer des tâches telles que la compilation des données avec le code HTML, par exemple:

<?php 

$query = mysql_query("SELECT * FROM table"); 
echo "<tably>" 
while($row = mysql_fetch_assoc($query)) 
{ 
    ?><tr><td><?php echo $row['item']; ?></td></tr> 
} 
?> 

Cette pratique laid et mauvais, ce que vous faire est quelque chose comme ceci:

<?php 

$data = array(); 
try 
{ 
    $query = mysql_query("SELECT * FROM table"); 
    while($row = mysql_fetch_assoc($query)) 
    { 
     $data[] = $row; 
    } 
}catch(Exception $e) 
{ 
    die("Database Error: " . $e->getMessage()); 
} 

/* 
    * Some more queries and logical data stuff. 
    * Set headers as well 
*/ 

require("main_template.php"); 

puis dans le modèle principal:

<table> 
    <?php foreach($data as $row): ?> 
    <tr> 
     <td><?php echo $row['item']; ?></td> 
    </tr> 
    <?php endforeach;?> 
</table> 

Les raisons pour lesquelles nous aimons obtenir toutes les données requises pour la page au démarrage, c'est que si des erreurs sont déclenchées, nous pouvons afficher une belle page, plutôt que des erreurs à mi-chemin dans votre contenu et ainsi de suite.

0

Si vous avez un code commun comme un menu, vous pouvez placer le code du menu dans le fichier menu.php, et utiliser le code du menu en utilisant l'instruction PHP include. se référer ici Php common menu code

Certainement ce que vous avez entendu est pas correct au sujet de cet article PHP se référer ....