Regarde ça:
<?php
echo "Hello World";
?>
<br />
<?php
echo "Welcome";
?>
Et maintenant, regardez ceci:
<?php
echo "Hello World";
echo "<br />";
echo "Welcome";
?>
Lequel des exemples ci-dessus est considéré comme le meilleur (au moins du point de vue des performances)?.
Je sais que les exemples sont triviaux mais je veux suivre les bonnes pratiques dès le début, donc quand j'ai de plus en plus de lignes, cela n'affectera pas la performance ou quoi que ce soit de manière négative.
web-development
php
html
rashed
la source
la source
Réponses:
Comme le souligne le commentaire, cela devrait être fait par des modèles. Mais si seulement vos deux choix sont possibles. Le cas 1 sera meilleur. Il s'agit du même concept que la mise en page de gonflage Android par xml, ou la création par programme de l'interface utilisateur. Votre
<br/>
est un contenu statique de votre html et tout ce que votre serveur fera sera de le montrer. Mais si vous utilisez php, pour l'exécuter, cela utilisera les ressources de vos serveurs et sera informatique.Voici comment procéder: index.php:
header.html et footer.html sont des modèles.
la source
Pour répondre directement à votre question: ne faites jamais écho à un texte statique ou HTML. Laissez cela en dehors de votre PHP.
S'échapper vers PHP est un gaspillage si tout ce que vous allez faire est de passer en texte statique ou en html statique. Tout le code à l'intérieur de
<?php ?>
est envoyé à PHP pour être interprété. Cela signifie que votre site Web est plus lent et que vous gaspillez de l'électricité si vous passez de grandes quantités de texte statique à PHP sans raison. (Parfois, il y a une raison.)La meilleure pratique consiste à faire fonctionner votre logique et votre grognement dans des fichiers sans HTML, uniquement PHP.
La façon dont j'aime le faire est avec un framework MVC. J'ai du PHP pur dans les modèles et les contrôleurs, et un mélange de HTML et PHP dans les vues. Vous n'avez pas besoin d'un framework MVC; vous pouvez simplement coller votre mélange de HTML dans des fichiers modèles, que vous incluez ensuite dans vos fichiers PHP purs.
Une fois que vous avez créé vos variables (qui ne contiennent pas de code HTML) dans des fichiers PHP purs, vous pouvez les transmettre au fichier avec votre code HTML. Là, et seulement là, est-ce bien de mélanger HTML et PHP. Mais, et ceci est important, mais lorsque vous travaillez avec des fichiers HTML, gardez le PHP au minimum.
Heureusement, PHP est livré avec des outils conviviaux pour rendre PHP plus facile à lire lorsqu'il est mélangé avec du HTML.
Syntaxe alternative
La meilleure pratique consiste à utiliser la syntaxe PHP régulière lors de l'écriture de PHP pur, mais la syntaxe alternative, lors du mélange de PHP et HTML.
Dans les fichiers PHP standard sans HTML:
C'est beau pour du PHP pur, mais pas idéal pour échapper au HTML. En particulier, les accolades de fermeture sont souvent difficiles à comprendre lorsqu'elles apparaissent dans de gros tas de HTML.
Il semble, sur la base de votre question, que vous auriez écrit, dans un fichier mélangeant HTML et PHP, ceci:
Pour les raisons décrites ci-dessus, nous souhaitons que le HTML ne soit pas envoyé à PHP. Nous faisons cela comme ceci:
Nous avons retiré notre code HTML de nos balises PHP, ce qui est une amélioration. Mais on pourrait aller plus loin.
Remarquez à quel point l'accolade de fermeture n'est pas informative? Nous ne savons pas s'il ferme une boucle ou une instruction if. Cela semble trivial dans l'exemple ci-dessus, mais il y a souvent des dizaines de lignes de HTML à l'intérieur de if / endif à l'intérieur d'une boucle / endloop.
La meilleure pratique est que dans un fichier mélangeant PHP et HTML, vous utilisez la syntaxe alternative, qui omet les accolades ouvrantes et fermantes (
{ }
):Mis à part la sémantique de la nouvelle syntaxe (
:
etendif;
au lieu de{
et}
), vous devriez remarquer deux choses:<?php ?>
balises, donc ils ne sont pas interprétés. Pour les raisons décrites ci-dessus, c'est bien.<?php } ?>
) fermant des choses difficiles à trouver où elles se sont ouvertes (car elles sont mélangées avec une bouffée de HTML à l'aspect désordonné). Encore une fois, imaginez un gros fichier HTML avec des boucles et des instructions if. Spécifier ce que vous fermez peut clarifier beaucoup.La même syntaxe conviviale pour les modèles peut également être utilisée pour les boucles:
Balises courtes
Un autre excellent outil fourni par PHP que, encore une fois, vous ne souhaitez utiliser lorsque vous mélangez PHP et HTML ensemble, est les balises courtes. Vous devrez peut-être activer les balises courtes dans le fichier php.ini. Une fois activées, les balises courtes rendent tout encore plus lisible.
Sans balises courtes, vous devez écrire
<?php echo $something; ?>
mais avec des balises courtes, vous pouvez écrire<?=$something?>
et cela aura exactement le même résultat.Lorsque vous combinez des balises courtes et la syntaxe PHP alternative, vous pouvez vraiment écrire des fichiers HTML élégants, qui incluent des éléments PHP. Prenant notre dernier exemple de boucle (juste la partie à l'intérieur de la boucle), les balises courtes nous permettent de réduire:
à
ce qui est beaucoup plus lisible.
Pouvons-nous aller plus loin? Oui. En utilisant divers systèmes de modèles, vous pouvez faire des choses comme:
Ce qui est incroyablement lisible. Les systèmes de modèles, cependant, sont bien au-delà de la portée de la question initiale (que j'ai laissée il y a quelque temps de toute façon).
la source
short_open_tag
directive sera toujours activée. PHP 5.4 rend<?=$thing?>
disponible tout le temps, même lorsqu'ilshort_open_tag
est désactivé. En outre,short_open_tag
est désactivé par défaut pour éviter les conflits avec XML.<?php $foo='ABC'; echo '<div>', $foo, '</div>'
et<?php $foo='ABC'; ?><div><?=$foo?></div>
aboutissent aux mêmes opcodes exacts, c'est-à-dire qu'ils sont identiques.<li>{$thing}</li>
comme vous l'avez montré, avec l'avantage sur les guillemets doubles que vous n'avez pas à échapper aux guillemets doubles à l'intérieur. Vous pouvez également attribuer heredoc ou le passer à des fonctions, il est donc beaucoup plus propre que php / html si vous l'utilisez en blocs, par exemple.array_reduce($items, function($s, $item) { $name = htmlspecialchars($item['name']); return $s . <<< EOT <li>{$name}: {$item['price']}</li> EOT; })
Vous apprenez, oubliez les performances dans les pages PHP. Choisissez plutôt la manière la plus facile à lire .
En regardant vos deux exemples, le deuxième est certainement le plus facile à lire, bien que je pense que c'est à cause de l'espacement que vous avez utilisé. Vous dites que vous cherchez à développer de bonnes habitudes dès le départ, je pense que votre temps peut être mieux utilisé en faisant bien lire votre code. Cela peut signifier la réécriture d'une section plusieurs fois jusqu'à ce que vous en soyez satisfait.
Si vous aimez vraiment les coulisses, je vais vous expliquer ce qui se passe avec le contenu statique dans une page PHP. L'une des premières choses consiste à "analyser" la page entière en code exécutable (comme vous le voyez entre les
<?php ?>
balises). Une partie de cela consiste à transformer tout texte statique en unecho
.Donc ça:
est transformé en quelque chose comme:
Il y a un coût très faible associé à l'analyse, mais aucune différence dans l'exécution du code résultant. Si vous utilisez un accélérateur PHP, l'analyse n'est effectuée qu'une seule fois, puis mise en cache, vous ne verrez donc aucune différence de performances après le premier chargement de la page.
N'oubliez pas: facile à lire!
la source
echo
, si vous voulez dire littéralement (ce que votre langue implique). Le résultat est le même, mais les méthodes sont très différentes. Ce que vous appelez "texte statique" échappe en fait de PHP à HTML. Lorsque cela se produit, le serveur commence à envoyer du texte brut. Il ne l'analyse pas via PHP, comme il le ferait avececho
. Les implications en termes de performances sont probablement faibles dans toutes les circonstances non artificielles, mais la différence mécanistique est importante.L'une des meilleures fonctionnalités de PHP est qu'il est conçu pour être intégré dans HTML. Il est généralement utilisé pour créer des modèles. Il facilite la lecture et la maintenance de votre code, car il sépare le code PHP du code HTML.
Mais si vous imprimez uniquement une page statique comme "Hello World!" C'est une mauvaise idée.
la source
Pour répondre simplement à votre question: étant donné votre exemple de code, il y aura peu ou pas de différence de performance. PHP est traité au niveau du serveur / hôte tandis que HTML est traité par l'agent utilisateur / la personne qui regarde votre page Web sur leur navigateur. Qui sera plus rapide? Difficile à déterminer.
Je suis d'accord avec les autres pour dire que chacun a ses forces et ses faiblesses et peut très bien fonctionner ensemble. PHP est programmable et peut faire des calculs et travailler avec des variables. Pour cette raison, toutes mes pages finissent par être PHP et font appel à des extraits de code HTML - des modèles comme cela a été mentionné et insère des variables pour que mon HTML devienne dynamique.
Dans votre exemple, vous pouvez enchaîner le code HTML en une seule instruction PHP comme ceci:
J'espère que cela clarifie un peu.
la source
il existe des limites à l'utilisation de HTML dans PHP.
La plupart du temps, vous auriez votre code HTML à l'extérieur. Vous créeriez une page comme vous le feriez si vous n'utilisiez pas PHP, puis ajoutez le PHP dans les zones du document où vous en avez besoin. Vous pouvez avoir plusieurs morceaux de PHP dans un document.
la source
Il est généralement considéré comme une mauvaise forme de sortie de code HTML à partir de PHP. Il y a plusieurs raisons à cela, mais la principale est qu'il est plus facile, surtout à long terme, de maintenir le code si le code HTML et le code PHP sont séparés.
C'est comme HTML, CSS et Javascript; il est juste beaucoup plus facile et plus pratique de le séparer.
Techniquement, cependant, cela ne fait absolument aucune différence sur la façon dont vous sortez les choses. Pour PHP, ce ne sont que des octets de suite.
la source
<?php echo 'hello'; ?>
est passé à PHP.hello
n'est pas transmis à PHP. Tout ce qui est passé à PHP est converti en bytecode puis interprété. Cela prend du temps, de la puissance de traitement et de l'électricité.