Lo más importante para un programador en PHP, en mi opinión, aparte de su experiencia es su conjunto de herramientas. Es decir, código que ha escrito por dentro y por fuera, hacia atrás y hacia delante desde tiempos inmemoriales.
Para mí, en este caso, la ventaja de OOP en claro. Tener una clase que sabes que siempre preformará lo que quieres a través de métodos simples es mucho más fácil para ti y para los miembros del equipo, entonces es simplemente llamando a una multitud de funciones estáticas. Si bien podría argumentar que una biblioteca de función satic incluye el mismo propósito, en mi opinión las clases son mucho más fáciles de leer y entender. Por ejemplo, en mi clase de sesión personalizado un programador puede mirar mi código y ver,
$my_session = new session();
$my_session->start();
if (($session_errno = $my_session->error()) !== FALSE)
{
//DO SOMETHING BECAUSE OF A SESSION ERROR
}
y fácil de entender que las sesiones en esta aplicación son manejados a través de nuestra clase de sesión personalizado, y debe devolver algún tipo de éxito/fracaso sin haber examinado nunca la biblioteca/clase.Mientras tanto, una llamada de este tipo,
session_start();
if (session_error())
{
//DO SOMETHING BECAUSE OF A SESSION ERROR
}
no dejan claro que session_start()
no es un gestor de sesiones de PHP por defecto, pero que va a llamar a las funciones definidas en session_set_save_handler()
que fue incluido en alguna lista de mega incluye mundial eso podría no ser fácil de localizar en una aplicación grande. Tampoco está tan claro que session_error() es una función que devuelve un error establecido por el manejador de sesión personalizado, frente a una función que puede buscar activamente problemas de sesión en una sesión ya generada y es completamente independiente de la sesión predeterminada de PHP.
Esto no es un gran ejemplo, pero creo que es una buena idea. No entré en detalles sobre la bondad que está protegiendo los datos de la aplicación en conjunto, la herencia y todo lo demás que hace que OOP sea útil.
Pero rápidamente, imagine una clase que accede a la base de datos MYSQL de una aplicación. Se emplea mucho tiempo diseñando la clase para usar declaraciones preparadas, registrar errores y proporcionar la lógica adecuada al programador según sea necesario. Un equipo puede preocuparse menos por los problemas de acceso a la base de datos simplemente llamando a las funciones públicas de "acceso a datos" de la clase sin mucha preocupación por errores fatales, mala lógica o SQL peligroso (inyecciones y demás).
Todo esto se puede hacer con funciones estáticas como usted sugiere, PERO cada función en esa biblioteca estática está expuesta a la aplicación como un todo, mientras que solo las funciones públicas y 'SEGURO' están expuestas a la aplicación que utiliza una base de datos Objeto de acceso. El programador no puede llamar accidentalmente a una función peligrosa que si no se ha inicializado correctamente por otras funciones podría causar problemas importantes, ni el programador podría suprimir deliberadamente errores u otros datos protegidos por la clase como podrían con un montón de funciones estáticas y variables globales.
Si bien una buena aplicación se puede diseñar sin ningún objeto, un buen programador debe disfrutar de la usabilidad, la extensibilidad y las protecciones que ofrecen los objetos cuando corresponda.
Me iré con mi metáfora final. Los objetos son como máquinas y herramientas especializadas dentro de una fábrica. Si bien la fábrica tiene varias de estas herramientas exclusivas en su línea de ensamblaje, desde frenos plegables simples hasta máquinas CNC y robots automáticos, son solo una pequeña parte del equipo que existe para ayudar a los trabajadores y gerentes más numerosos, nuestra estática funciones, haga el trabajo de construir un mejor automóvil, camión o bicicleta.
¿Qué es "funciones aleatorias"? – Svisstack
** posible duplicado de [functions.php vs OOP] (http://stackoverflow.com/questions/2392795/functions-php-vs-oop) y [¿Cuál es el punto de las clases] (http://stackoverflow.com/questions/1993638/classes-whats-the-point) ** - En resumen: o bien usa OOP o no. – Gordon
Pensé que una clase de "Utilidades"/"Ayudantes" era estándar en la mayoría de los proyectos OO: P. – Matt