2012-02-21 8 views
20

Por mi vida, parece que no puedo entender "clases" en PHP.He estado escribiendo PHP sin "clases" durante años ... ¿Qué me estoy perdiendo?

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

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

+17

oops. Faltan OOP – NAVEED

+1

intente utilizar marcos (zend, código de encendido, etc.) de esta forma usted aprendería más sobre clases, MVC y más – Bert

+12

* Nada *. La programación procedimental es una forma muy válida de escribir programas, y si funciona para usted, es increíble, consérvela. Usar objetos es una forma diferente de pensar y trabajar, y si quieres aprender, prepárate para invertir algo de tiempo. –

Respuesta

11

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

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

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

+0

Upvoted para sugerir que no siempre es la mejor manera. –

3

Todo el mundo respondió que era cierto que falta mucho porque digamos que tiene un sitio web de galería de fotos en lugar de escribir funciones y al final termina con una gran cantidad de ellos

programación orientada a objetos serían útiles en:

  1. organización y capacidad de mantenimiento Código
  2. añade claridad, y reducir la complejidad
  3. Destaca datos a través de proce mientos
  4. Código modularidad
  5. Código re-usabilidad (Créeme tendrá que mucho)
  6. bien adaptado para las bases de datos

no estaba usando programación orientada a objetos antes, pero empecé y seas Honesta no hace mucho tiempo, y me pareció muy útil en esos puntos especialmente en la reutilización del código

Digamos que tengo un sitio web galería de fotos voy a crear una clase para los usuarios y esta clase hará CRUD en todos los usuarios tabla y una clase para las fotos para hacer el CRUD en todas las fotografías tabla

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 en que es sólo podría escribir los métodos CRUD una vez y luego volver a utilizarlo en todas mis otras clases

espero que hubiera respondido a su pregunta

3

IMO, si no desea separar y nuestro código htmls & php; es mejor que no uses clases.

Los necesitarás en un entorno de marco (no necesariamente), y los necesitarás si quieres objetivar tus datos, manejarlos así.

pero si está bien sin él, entonces está bien :)

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

9

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 acoplado y, por lo tanto, más fácil de mantener.

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

Para un ejemplo concreto, mira el Mysqli extension: cada función tiene una versión OOP y de procedimiento, y la versión de procedimiento casi siempre necesita tener un parámetro de "enlace" adicional para darle contexto, cuando la versión OOP obtiene ese contexto del objeto actual.

2

¡Buena pregunta! ¡Obtuviste mi voto popular!

Directo al grano:
Falta un mundo entero!

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

Decida un proyecto pequeño y escríbalo con el estilo OOP. Entonces entenderás la idea.

Tome esta sugerencia también: Nombre sus clases como sus nombres de archivo (por ejemplo, "MyClass" -> "MyClass.php"). Facil de mantener.

0

Probablemente falte la capacidad de prueba: supongo que sus funciones llaman a otras funciones, que a su vez podrían llamar a otra función, ¿no? Por lo tanto, tendrá 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 stub) para una prueba. De esta forma, puede probar cada funcionalidad de forma aislada. Piense en poder probar su 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.

+0

Esta respuesta es completamente incorrecta. Supone que las funciones escritas llamarán a otras funciones. El argumento para los simulacros o stubs se aplica tanto a las entradas de funciones como a los métodos en una clase. De hecho, un estilo de codificación de procedimientos se acerca más a un estilo de programación funcional en el que es menos difícil escribir funciones puras que son infinitamente más comprobables. –

Cuestiones relacionadas