Puedo entender su confusión según el ejemplo que proporcionó. Esa es realmente una mala manera de usar una clase ... y solo porque se use una clase, no hace un sistema OOP.
En el caso de Hybrid, solo están usando una clase para el espacio de nombres de sus funciones. Teniendo en cuenta que Hybrid es un tema framework , 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 usara una estructura de clase, los desarrolladores de temas secundarios necesitarían saber cuáles eran todas las llamadas a funciones existentes para evitar el reuso de los nombres. Y sí, usted podría prefijar todas sus funciones con un slug único, pero eso hace que el código sea difícil de leer, difícil de mantener e intrínsecamente no reutilizable si desarrolla otros sistemas que deseen utilizar la misma funcionalidad.
Para responder a tus preguntas
Wtf? ¿Cuál es el punto de hacer esto? Obviamente, no utilizarás dos o más instancias del mismo tema al mismo tiempo.
No, no usarás dos o más instancias del mismo tema. Pero como dije, piense en la estructura de clase en este caso como namespacing las funciones, no creando una instancia de objeto tradicional. Agrupar todo en una clase y crear una instancia de los métodos de llamada ( myClass->method();
) o de los métodos de llamada directamente ( myClass::method();
) es una forma muy clara de hacer espacios de nombres de forma legible y reutilizable.
Por supuesto, siempre puede usar algo como myClass_method();
en su lugar, pero si desea reutilizar algo de este código en otro tema, en un complemento o en otro marco, debe volver atrás 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 por el espacio de nombres (lo cual es ridículo), pero ¿cuál es la excusa del tema? ¿Me estoy perdiendo algo?
En la mayoría de las situaciones estaría de acuerdo contigo. Sin embargo, esa mayoría está disminuyendo rápidamente. Alojé varios sitios en una instalación de MultiSite que usa variaciones del mismo tema. En lugar de volver a crear el mismo tema una y otra vez con pequeñas diferencias, tengo una única "clase" para el tema principal y todos los temas secundarios extienden 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 clase para el espacio de nombres en 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 clase para una fácil extensibilidad por temas secundarios.
¿Cuál es la ventaja de codificar un tema como este?
Si solo está utilizando Hybrid en su sitio, hay poca ventaja para usted como usuario final. Si está creando un tema secundario para Hybrid, hay ventajas en el espacio de nombres y la 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 eres un desarrollador de temas a quien le gusta una característica específica de Hybrid pero no todo el tema, la ventaja radica en la reutilización de código rápida y eficiente en tu proyecto no híbrido (asumiendo que también es GPL).