xajax una soporta segundo rapida por optimizar mas lentas lenta hacer cuello cuantas consultas consulta como botella agilizar php oop coding-style

php - una - view lenta mysql



He estado escribiendo PHP sin "clases" por años... ¿qué me estoy perdiendo? (6)

¡Buena pregunta! Tienes mi upvote!

Directo al grano:
¡Te estás perdiendo un mundo entero !

Hay muchas metáforas para describirlo, pero no hay nada mejor que practicar: ¡obviamente lo sabes después de "años" de programación!

Decidir sobre un pequeño proyecto y escribirlo estilo OOP . Entonces tendrás la idea.

Toma también este consejo: nombra tus clases como sus nombres de archivo (por ejemplo, "MyClass" -> "MyClass.php"). Facil de mantener.

Por mi vida, parece que no puedo envolver mi cabeza en torno a "clases" en PHP.

He logrado escribir sitios web grandes, escalables y populares sin ellos.

¿Qué me estoy perdiendo? (¿Y cómo aprendo?)


El punto de las clases (programación orientada a objetos) es que agrupa datos junto con el código que opera en él. Si se hace bien, esto conduce a un código menos estrechamente acoplado y, por lo tanto, más mantenible.

En la práctica, significa menos variables globales (ya sea que se utilicen directamente o se accedan a través de métodos de fábrica estáticos) y que se transfieran menos datos (es decir, firmas de métodos más pequeños).

Para un ejemplo concreto, mire la extensión Mysqli : cada función tiene una versión de procedimiento y otra de OOP, y la versión de procedimiento casi siempre necesita tener un parámetro de "enlace" adicional para darle contexto, mientras que la versión de OOP obtiene ese contexto de objeto actual.


Las clases ayudarán con la reutilización del código y, potencialmente, una aplicación muy estructurada.

La programación de procedimientos puede ser mucho más rápida tanto en tiempo de desarrollo como en velocidad de ejecución.

La programación OO es la forma más convencional pero no siempre es la mejor. Theres un libro llamado PHP Objetos, patrones y práctica que es una muy buena lectura, cubre los conceptos básicos de las clases, por qué y cómo usar, abstracción y patrones de diseño comunes como MVC. También cubre pruebas de unidad y otras buenas prácticas para desarrolladores de PHP.


OMI, si no desea separar su código htmls y php; Será mejor que no uses clases.

Los necesitará en un entorno marco (no necesariamente), y los necesitará si desea objetivar sus datos, manejarlos así.

pero si estás bien sin eso, entonces estás bien :)

Cuando se trata de manejar un sistema muy complejo, con muchas estructuras de datos diferentes, más de un miembro del equipo, etc. Usted y su código deben organizarse muy bien, y necesitará clases.


Probablemente te falte la capacidad de prueba: supongo que tus funciones llaman a otras funciones, que a su vez podrían llamar a otra función, ¿verdad? Así que tendrás problemas para probar una función aislada. Con OOP, usted ensambla "montones" de objetos y puede intercambiar cada objeto con uno "falso" (llamado simulacro o talón) para una prueba. De esta manera, puede probar cada funcionalidad de forma aislada. Piense en poder probar el código de salida sin necesidad de una base de datos. Piense en probar su código de controlador (el código que procesa los parámetros de solicitud y decide qué acción tomar) sin necesidad de un servidor web.


Todos respondieron correctamente. Te estás perdiendo mucho porque digamos que tienes un sitio web de galería de fotos en lugar de funciones de escritura y al final terminas con muchas.

OOP sería útil en:

  1. Código de organización y mantenibilidad.
  2. Añade claridad y reduce la complejidad.
  3. Destaca datos sobre procedimientos.
  4. Código modularidad
  5. Código de reutilización (créame, lo necesitará mucho)
  6. Muy adecuado para bases de datos

No estaba usando OOP antes pero empecé y, para ser honesto, no hace mucho tiempo, lo encontré muy útil en esos puntos, especialmente en la reutilización del código.

Digamos que tengo un sitio web de galería de fotos. Crearé una clase para usuarios y esta clase hará CRUD en toda la tabla de usuarios y una clase para las fotos para hacer CRUD en todas las tablas de fotografías.

También podría hacer una clase para hacer todo el CRUD por mí sin especificar en qué tabla y luego usar la herencia para extender todo el CRUD en mi clase de usuarios y mi clase de fotografía

el punto es que solo pude escribir los métodos CRUD una vez y luego reutilizarlos en todas mis otras clases

Espero haber respondido a tu pregunta.