Puedo entender su confusión según el ejemplo que proporcionó. Esa es realmente una forma pobre de usar una clase ... y solo porque se usa una clase, no hace que un sistema OOP.
En el caso de Hybrid, solo usan una clase para nombrar sus funciones. Teniendo en cuenta que Hybrid es un marco de temas , esto se hace para que los temas secundarios puedan reutilizar nombres de funciones sin que el desarrollador tenga que preocuparse por la colisión de nombres. En muchos casos, un marco temático (tema principal) es tan complejo que muchos desarrolladores de temas secundarios nunca entenderán exactamente lo que sucede debajo del capó.
Si Hybrid no usaba una estructura de clase, los desarrolladores de temas secundarios tendrían que saber cuáles eran todas las llamadas a funciones existentes para poder evitar la reutilización de nombres. Y sí, podría simplemente prefijar todas sus funciones con una babosa única, pero eso hace que el código sea difícil de leer, difícil de mantener e inherentemente no reutilizable si desarrolla sistemas adicionales que quieran utilizar la misma funcionalidad.
Para responder tu pregunta
Wtf? ¿Cuál es el punto de hacer esto? Obviamente no usará dos o más instancias del mismo tema, al mismo tiempo.
No, no utilizará dos o más instancias del mismo tema. Pero como dije, piense en la estructura de clases en este caso como espacios de nombres de las funciones, no creando una instancia de objeto tradicional. Agrupar todo en una clase e instanciarlo para llamar a los métodos ( myClass->method();
) o llamar a los métodos directamente ( myClass::method();
) es una forma muy limpia de espacios de nombres de manera legible y reutilizable.
Por supuesto, siempre podría usar algo como en su myClass_method();
lugar, pero si desea reutilizar cualquiera de este código en otro tema, en un complemento o en un marco de trabajo adicional, debe volver y cambiar todos sus prefijos. Mantener todo en una clase es más limpio y le permite volver a desarrollar y volver a implementar mucho más rápidamente.
Supongamos que los complementos hacen esto para el espacio de nombres (lo cual es ridículo), pero ¿cuál es la excusa del tema? ¿Me estoy perdiendo de algo?
En la mayoría de las situaciones, estoy de acuerdo contigo. Sin embargo, esa mayoría está disminuyendo rápidamente. Alojo varios sitios en una instalación de MultiSite que usan variaciones del mismo tema. En lugar de volver a crear el mismo tema una y otra vez con pequeñas diferencias, tengo una sola "clase" para el tema principal y todos los temas secundarios amplían esa clase. Esto me permite definir una funcionalidad personalizada para cada sitio mientras mantengo un sentido general de uniformidad en toda la red.
Por un lado, los desarrolladores de temas pueden elegir un enfoque basado en clases para el espacio de nombres de su funcionalidad (lo cual no es ridículo si trabaja en un entorno donde reutiliza fragmentos del mismo código una y otra vez). Por otro lado, los desarrolladores de temas pueden elegir un enfoque basado en clases para facilitar la extensibilidad por temas secundarios.
¿Cuál es la ventaja de codificar un tema como este?
Si solo usa Hybrid en su sitio, hay poco que conocer como ventaja para usted como usuario final. Si está creando un tema secundario para Híbrido, existen ventajas de espacio de nombres y extensibilidad. Si trabaja para ThemeHybrid , la ventaja radica en la reutilización de código rápida y eficiente en sus otros proyectos (Prototype, Leviathan, etc.).
Y si usted es un desarrollador de temas que le gusta una característica específica de Hybrid pero no el tema completo, la ventaja radica en la reutilización de código rápida y eficiente en su proyecto no híbrido (suponiendo que también sea GPL).