12
votes

Efficacité pour y compris les fichiers de fonctions (en PHP)

Si j'avais un grand nombre de fonctions, il préférerait-il les garder tous dans un grand fichier ou qu'il serait préférable de les séparer dans plusieurs fichiers de fonctions connexes. Pour mieux, je veux dire plus efficace pour la maintenabilité et pour le traitement du serveur de la demande.

Par exemple, j'ai tous mes fichiers dans un fichier nommé include.php . Mais serait-il plus sage d'avoir un fichier incluant la notification: xxx


0 commentaires

5 Réponses :


22
votes

Les séparez certainement, pour la maintenabilité. Je doute que la performance souffrira du tout, mais même si elle le fait (juste un bit de Teensy), vous ferez mieux d'écrire un code prêt et lisible.


1 commentaires

-1, avoir toutes les fonctions dans un seul fichier ne signifie pas qu'il est restreint, illisible. Cela dépend de comment vous le faites. En effet, il est toujours très possible d'être restreint et illisible même avec plusieurs inclut.



2
votes

En termes de maintenabilité, il est généralement préférable de séparer vos fonctions en groupes associés. (Comme vous l'avez montré ci-dessus, user.php serait uniquement les fonctions liées à l'utilisateur).

Vous ne devez disposer que d'un fichier qui comporte toutes ces inclut si vous savez que vous aurez besoin de tous les fichiers inclus chaque fois que vous devez inclure n'importe quel fichier. Sinon, il défait le but d'avoir ce fichier «attrape-tout».


0 commentaires

2
votes

Dans mon expérience multiples inclut et / ou nécessite généralement un goping d'arèt pour vous mettre trop de plus en arrière si vous parlez d'une douzaine de fichiers ou de fichiers pour les bibliothèques de fonction. Surtout si vous pouvez ne pas appeler l'instruction pour un fichier particulier une fois lors d'un cycle de vie de demande.

où il commence à afficher les hits de performance, c'est si vous entrez dans une architecture de type fonctionnelle / procédurale très complexe où il peut y avoir des centaines de classes / fichiers différents. Mais généralement à ce stade, vous aurez, j'espère avoir fait une sorte d'atténuation par la mise en cache / la compilation.


1 commentaires

En fait, il sera difficile de ralentir si vous n'avez pas d'accélérateur. Les lectures de disque sont toujours chères.



3
votes

Vous voulez être sûr que vous utilisez un cache PHP comme XCache ou APC. Vos fichiers PHP doivent alors tous être en mémoire et vous ne devriez pas vous inquiéter de votre inclusion de votre disque.

Je voudrais certainement trouver plus facilement si vous avez rompu des fonctions / classes identiques dans leurs propres fichiers.


1 commentaires

XCache et APC, sauf configuration spécifique autrement, vérifiera le temps de modification de fichier pour déterminer s'ils doivent traiter une nouvelle version du fichier. Cela affecte un peu la performance s'il y a un grand nombre d'inclinations. Sur un serveur de production où le code est corrigé, vous devez vraiment l'éteindre. Vous obtiendrez une belle réduction de performance au prix de la mise à jour manuelle du cache lorsque vous téléchargez une nouvelle version du code.



0
votes

J'ai une liste d'inclut dans un fichier central .config.

Pour toutes les classes de OOP, bien que j'utilise AutoLoad -> Je sais que c'est légèrement plus lent, mais cela permet d'éviter d'inclure eux comme je fais une nouvelle classe. Et ils ne sont chargés que si nécessaire.

En tant que mis de côté, include est plus rapide que Incluse_once car il n'est pas nécessaire de vérifier si le fichier a déjà été inclus.


0 commentaires