Pregunta

¿Cuál es la mejor manera de tratar con las funciones de "servicio público" en un marco de programación orientada a objetos de PHP? En este momento, sólo tenemos un archivo con varias funciones que son necesarias en todo el sistema. (Por ejemplo, una función distribute() que acepta un valor y una matriz, y devuelve una matriz con el valor distribuido en las mismas proporciones y mismas teclas que la matriz de entrada.)

Siempre he sentido "sucio" que usando porque no está orientado a objetos en absoluto. ¿Es mejor práctica para mover éstos en varias clases como métodos estáticos, o es sólo una solución semántica? O hay sólo va a ser un nivel en un marco en el que algunas cosas se va a caer fuera de la estructura de programación orientada a objetos?

¿Fue útil?

Solución

Siempre he sido más pragmático sobre cuestiones como éstas.

Si quieres ir-POO completa, obviamente debe pegarse éstos en clases. Sin embargo, estas clases sólo van a ser las clases de contenedores, debido a que en realidad no representan ningún tipo de objeto.

También: el uso de clases requeriría que o bien tienen una instancia de esa clase, utilizando el patrón único o declarar cada función estática. El primero de ellos es más lento (bueno, tal vez no sea mucho, pero en unos grandes cosas marco así obtener grandes, demasiado - especialmente en lenguajes interpretados como PHP), mientras que el segundo y el tercero son simplemente inútil y simplemente una envoltura de programación orientada a objetos para un conjunto de funciones (especialmente el tercer enfoque).

Editar : No dude en demostrar que estoy equivocado. Puede ser que sea. No estoy muy experimentado y siempre lo vi de esa manera, pero puedo estar equivocado.

Otros consejos

tiendo a hacer una clase Util() que sólo contiene métodos estáticos, no tiene atributos, y no se hereda de. En esencia, actúa como un "espacio de nombres" a un montón de funciones de utilidad. Voy a permitir esta clase de crecer en tamaño, pero de vez en cuando dividir de métodos en sus propias clases si está claro que esos métodos están diseñados sólo para trabajar con ciertos tipos de datos o si es claro que un grupo de métodos relacionados debe ser agrupados en una clase junto con, quizás, algunos atributos.

Creo que es perfectamente bien para desviarse de las prácticas de programación orientada a objetos puramente siempre que el código que se desvía está bien organizado y no está creando defectos arquitectónicos en su sistema que hacen que sea más difícil de entender y mantener.

Siempre pienso en funciones de utilidad como extensiones de las funciones estándar de PHP. No están orientadas a objeto, ya que en realidad no obtener ningún beneficio de hacerlas OO.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top