2010-11-07 8 views
6

Jusqu'à présent j'ai environ 3 PHP inclus sur mon site.Est-il acceptable de mettre beaucoup de PHP sur un site?

<?php include("includes/header.html"); ?> 

Y at-il une raison pour laquelle je ne devrais pas ajouter une tonne de ceux-ci?

+2

Pouvez-vous définir une 'tonne'? –

+0

peut-être cinq à dix? – omnix

+0

plus comprend généralement signifie plus de fichiers à garder la trace de ... si vous le faites d'une manière logique, il va travailler ... – Scott

Répondre

8

Pas vraiment. Ils sont utilisés assez souvent et libéralement, bien que plus souvent qu'autrement, pour inclure d'autres fichiers PHP. Ces fichiers PHP en incluent souvent d'autres, donc il n'y a vraiment pas de problème.

Par ailleurs, si vous utilisez cette technique pour inclure d'autres fichiers PHP (par exemple les fichiers de bibliothèque avec des fonctions que vous utilisez), il est une bonne idée d'utiliser require_once (il y a aussi include_once, ainsi que plaine require); require provoquera une erreur si son argument ne peut pas être trouvé, et ne continuera pas à essayer de rendre la page. require_once (et include_once) n'inclura pas le même fichier plusieurs fois, même si vous appelez require_once (ou include_once) depuis différents endroits.

+0

D'accord, merci! – omnix

1

Il y a un avantage à écrire du code orienté objet et à passer à PHP 5: vous pouvez éviter une "tonne d'inclusions" en utilisant class autoloading.

6

Je soupçonne que vous faites quelque chose comme ceci:

<?php 
    include("session_and_headers.php"); 
    include("top_nav.html") 
    include("right_sidebar.html"); 
?> 

... actual content generation code ... 

<?php 
    include("footer.html"); 
    include("js_loader.php"); 
?> 

Il n'y a rien de mal à cela pour de simples sites statiques ou des situations où les utilisateurs ne disposeront que plusieurs points de vue distincts. Mais que se passe-t-il si vous souhaitez utiliser une barre latérale légèrement différente sur certains types de pages seulement? Où mettez-vous la logique pour déterminer cela donc il est évident pour la prochaine personne qui hérite de votre code? Si vous êtes dans ce genre de complexité, je vous recommande d'utiliser l'approche MVC (même si vous utilisez principalement les aspects vue/contrôleur).

Si vous faites un site de page nn en PHP qui a juste besoin de partager des éléments communs, il n'y a aucune raison d'éviter simplement d'inclure les fichiers au besoin.

Ne regardez pas ce tant que est-ce mauvais pour PHP, regardez plus que est difficile de maintenir?

+0

J'utilise seulement ceci parce que je ne veux pas copier tout le même HTML sur chaque page. – omnix

+0

@omnix - vous devriez aller bien alors. –

0

Seul inconvénient est la performance - chaque inclusion coûte des appels système. Avec 3 ou 10 c'est tout petit changement à moins que votre trafic est énorme, mais environ 100 peut être un problème. La solution consiste à utiliser un cache de bytecode (comme apc) et à définir votre variable realpath_cache_size à une valeur plus élevée (par défaut, elle est suffisante pour environ 100-200 fichiers, en fonction des longueurs de chemin). Autre que cela - pas beaucoup de problème.