2010-01-21 11 views
9

Se ho avuto un gran numero di funzioni sarebbe meglio per tenerli tutti in un unico file di grandi dimensioni o sarebbe meglio separarli in diversi file di funzioni correlate. Per meglio intendo più efficiente sia per la manutenzione che per il server che elabora la richiesta.efficienza per includere i file delle funzioni (in PHP)

Per esempio in questo momento ho tutti i miei file in un file chiamato include.php. Ma sarebbe più saggio avere un file include di include come:

<?php 
include('/functions/user.php'); 
include('/functions/admin.php'); 
include('/functions/content.php'); 
include('/functions/nav.php'); 
include('/functions/database.php'); 
include('/functions/other_junk.php'); 
?> 

risposta

17

Separarli definitivamente, per motivi di manutenibilità. Dubito che le prestazioni ne risentiranno del tutto, ma anche se lo fosse (solo un pochino), è meglio scrivere codice manutenibile e leggibile.

+2

+1 per propagare la manutenibilità e la leggibilità in php. – whiskeysierra

+0

-1, Avere tutte le funzioni in un file non significa che sia non gestibile, illeggibile. Dipende da ** come ** lo fai. In effetti, è ancora molto possibile essere non mantenibile e illeggibile anche con più include. – Pacerier

2

In termini di manutenibilità, in genere è meglio separare le funzioni in gruppi correlati. (come hai mostrato sopra, user.php sarebbero solo le funzioni relative all'utente).

Si dovrebbe avere solo un file che ha tutti coloro comprende se si sa che avrete bisogno di tutti i file inclusi ogni volta che è necessario includere qualsiasi file. Altrimenti, sconfigge lo scopo di avere quel file 'catch-all'.

2

Nella mia esperienza multipla include e/o richiede generalmente arent goping per impostare voi troppo indietro se sei a parlare una dozzina di coppia o così i file per librerie di funzioni. Soprattutto se riesci a chiamare la dichiarazione per un particolare file solo una volta durante il ciclo di vita della richiesta.

Dove comincia a mostrare colpi di performance è se si entra in OOP o un molto complesso tipo di architettura funzionale/procedurale in cui ci possono essere centinaia di diverse classi/file. Ma in generale a quel punto si spera che si sia fatto un qualche tipo di attenuazione tramite il caching/compilazione.

+0

In realtà sarà gradevole se non si dispone di un acceleratore. Le letture del disco sono ancora costose. – Pacerier

3

si vuole essere sicuri che si sta utilizzando una cache PHP come XCache o APC. I tuoi file PHP dovrebbero quindi essere tutti in memoria e non dovresti essere preoccupato che il tuo includa il colpire il disco.

avrei sicuramente trovare più facile se hai rotto come funzioni mentalità/classi nelle proprie file.

+4

XCache e APC, se non diversamente configurato diversamente, verificheranno il tempo di modifica del file per determinare se devono elaborare una nuova versione del file. Questo influisce sulle prestazioni un bel po 'se ci sono un gran numero di include. Su un server di produzione in cui il codice è corretto, è necessario disattivarlo. Otterrai un piccolo miglioramento delle prestazioni al costo di dover svuotare manualmente la cache quando carichi una nuova versione del codice. – Mike

0

Ho una lista di include in un file .config centrale.

Per tutte le classi OOP se io uso autoload -> Lo so che è un po 'più lento, ma si evita di dover compreso loro come faccio una nuova classe. E vengono caricati solo secondo necessità.

Per inciso, comprendono è più veloce di include_once in quanto non ha bisogno di controllare se il file è stato incluso già.

Problemi correlati