Como se discutió en otras respuestas, hay diferencias semánticas entre las dos variantes. También en un escenario de alojamiento compartido donde el proveedor de hospedaje no ofrece caché PHP Opcode (APC o equivalente), todos los archivos de código deben leerse y compilarse una vez por solicitud. Aquí el asesino principal no es el tiempo de compilación en sí mismo (~ 0.5M sentencias PHP/seg en un núcleo moderno) sino la sobrecarga de E/S de recopilar los archivos PHP si no están previamente almacenados en la memoria caché del sistema de archivos (10s de I/Os/sec).
En este escenario, si una aplicación requiere un núcleo de, digamos, una docena de módulos para el 90% de las consultas, entonces tiene sentido almacenar en caché un conjunto de estos en un solo archivo de carga masiva. Si se adopta este tipo de solución, colocar un protector class_exists('class')
alrededor del archivo de la clase lo hace a prueba de bombas.
también una advertencia: si utiliza una función __autoload()
hacer la carga de clases JiT, ser conscientes de que class_exists('fred')
se activará la carga automática de fred
. Si quieres una sonda débil, entonces necesitas usar el predicado !in_array('fred', get_declared_classes())
.
En realidad, una perspectiva muy interesante, me sorprende que nunca antes haya visto el segundo uso. – esqew
Vale la pena mencionar que hay mejores formas hoy en día http://php.net/spl-autoload-register – KingCrunch
Supongo que aquí cada archivo representa una y solo una clase? Usted no tiene múltiples clases por archivo? –