Come discusso in altre risposte ci sono differenze semantiche tra le due varianti. Anche in uno scenario di hosting condiviso in cui il provider di hosting non offre il caching Opcode PHP (APC o equiv), tutti i file di codice devono essere letti e compilati una volta per richiesta. Qui il killer principale non è il tempo di compilazione stesso (~ 0.5 M istruzioni PHP/sec su un core moderno) ma il sovraccarico I/O della raccolta dei file PHP se non pre-memorizzato nella cache del file system (10s di I/Os/sec).
In questo scenario, se un'applicazione richiede un nucleo di una dozzina di moduli per il 90% delle query, allora ha senso memorizzare nella cache un pacchetto di questi in un unico file di bulkload. Se viene adottato questo tipo di soluzione, collocare una guardia class_exists('class')
intorno al fabbisogno del file di classe lo rende a prova di bomba.
anche un avvertimento: se si utilizza una funzione di __autoload()
fare classe Jit carico, essere consapevoli che class_exists('fred')
sarà innescare il caricamento automatico di fred
. Se si desidera una sonda debole, è necessario utilizzare il predicato !in_array('fred', get_declared_classes())
.
In realtà una prospettiva molto interessante, sono sorpreso che non abbia mai visto il secondo utilizzo prima. – esqew
Vale la pena menzionare che esistono modi migliori al giorno d'oggi http://php.net/spl-autoload-register – KingCrunch
Immagino che ogni file rappresenti una sola classe? Non hai più classi per file? –