explicación simple PHP OOP vs Procedural?

106

Me gustaría aprender PHP y quiero tener una idea sobre OOP y Procedimientos. Leí algunos otros blogs y tutoriales sobre OOP vs Procedural, pero todavía no puedo entender el enfoque.

OOP vs procedimiento

  1. ¿Qué debo aprender?
  2. ¿Cuál es la diferencia en el código? cuales son los efectos?
  3. ¿Cómo puede ayudar un framework PHP en el enfoque de POO? (Me gustaría aprender CodeIgniter)
  4. ¿El procedimiento necesita un marco?

Realmente quiero saber la diferencia de código de ambos, mi comprensión de OOP es que creas una clase como y se puede acceder. (No sé si eso es correcto).

¡Gracias!

Pennf0lio
fuente

Respuestas:

279

Antecedentes: solicitó una "explicación simple" que sugiere:

  1. Quieres una descripción general sensata y sin jerga
  2. Quieres algo que te ayude a aprender desde el principio
  3. Ha descubierto que nunca dos personas responden a la pregunta de la misma manera , y es confuso. Esa es la razón por la que está pidiendo una explicación simple. ¿Si?

Respuesta corta sin jerga:

  1. Muchas explicaciones introductorias saltan rápidamente a ejemplos del "mundo real POO". Esos pueden confundir más que ayudar, así que siéntete libre de ignorar eso por ahora.
  2. Puede pensar en el código fuente simplemente como "fragmentos" de funcionalidad, que simplemente se guardan en archivos individuales.
  3. Hay diferentes formas de organizar esos "trozos"; dependiendo de cosas como las convenciones del lenguaje de programación, los antecedentes y la capacitación del desarrollador (es), o simplemente las preferencias personales antiguas.
  4. La programación orientada a objetos y la programación procedimental son simplemente dos metodologías principales, generalmente reconocidas, sobre cómo organizar y disponer esos "trozos" de código.

Respuesta larga sin jerga:

Procedimental vs OOP es solo un aspecto de un tema fundamental de la programación de computadoras: cómo hacer que su código sea fácil de entender y fácil de mantener profesionalmente . De hecho, puede escribir código "procedimental" que siga algunos de los principios de la programación orientada a objetos, por lo que los dos no son necesariamente opuestos.

Su comprensión realmente crecerá una vez que aprenda otros lenguajes de programación orientados a objetos , entre los cuales, PHP es un "niño nuevo en el bloque".

Aquí hay una descripción general rápida de lo que aprenderá a medida que desarrolle experiencia:

  • Puede escribir código fuente PHP que realice tareas útiles
  • Puede organizar tareas útiles en "fragmentos" de código.
  • Puede pensar en "fragmentos" de código independientemente de los archivos individuales donde se guardan.
  • A veces, esos "fragmentos" de código se comportarán de manera diferente según los parámetros que ingrese
  • Los fragmentos de código que aceptan parámetros se denominan "Funciones".
  • Las funciones se pueden "fragmentar" juntas, y hay diferentes formas de hacerlo:
    • Por ejemplo: podría tener un solo archivo PHP grande con todas las funciones que haya escrito en toda su vida, enumeradas en orden alfabético por nombre de función
    • Por ejemplo: podría tener varios archivos PHP con funciones agrupadas por tema [por ejemplo, funciones para realizar manipulación básica de cadenas, funciones para procesar matrices, funciones para entrada / salida de archivos, etc.]
  • OOP es una forma especial de "fragmentar" funciones en una "clase"
  • Una clase es solo otro nivel de "fragmentación" de código para que pueda tratarlo como un todo unificado
  • Una clase se puede considerar como un "fragmento" de métodos y propiedades.

    • Los métodos son simplemente funciones que están lógicamente relacionadas entre sí de alguna manera significativa. Las palabras "método" y "función" son básicamente dos términos diferentes para lo mismo.
    • las propiedades son simplemente valores de datos que están relacionados con la clase. Estos son valores que intencionalmente no están aislados de ninguna función individual, porque más de una de las funciones de la clase debería tener acceso a ellos.
      • Por ejemplo : si su clase tiene varios métodos para hacer astronomía, las propiedades de la clase podrían ser los valores de ciertos números famosos que todos los métodos de astronomía deben conocer (como Pi, la velocidad de la luz, la distancia entre planetas específicos, etc.).
    • Aquí es donde la mayoría de las explicaciones de OOP se vuelven confusas porque se ramifican en " ejemplos del mundo real " que rápidamente pueden salirse del tema . A menudo, "mundo real" es un eufemismo para las perspectivas ontológicas de un individuo en particular. Eso tiende a ser útil solo una vez que ya comprende el concepto lo suficientemente bien como para enseñárselo a otra persona.
    • Para comprender la programación orientada a objetos sin confusión, puede omitir los ejemplos del "mundo real" por ahora y concentrarse en el código. Una clase es simplemente una forma de almacenar funciones (también conocidas como métodos) y propiedades (también conocidas como datos) como código PHP en uno o más "fragmentos" relacionados donde cada "fragmento" individual trata de un tema específico o pieza de funcionalidad. Eso es todo lo que necesita saber para comenzar.
  • Una clase es útil porque le permite organizar su código en un nivel muy alto de una manera que lo hace fácil de entender, usar y mantener.

  • Cuando alguien ha escrito muchas funciones y las ha organizado en muchas clases, y ha conseguido que funcionen juntas de una manera interesante, empaquetan todo y lo llaman "Framework" .
  • Un Framework es solo el siguiente nivel más alto de "fragmentación" (incluido el estilo de codificación y las convenciones) en el que una o más personas están de acuerdo porque les gusta la forma en que está organizado el código y se adapta a su estilo de trabajo, preferencias, valores y planes para el mundo. dominación, etc.

Ver también

dreftymac
fuente
1
@dreftymac: podría haberme proporcionado comentarios sobre lo que podría mejorarse en mis adiciones, en lugar de borrarlo torpemente a mis espaldas. De Verdad. Doy la bienvenida a las críticas constructivas y los invito a hacer lo mismo.
Flavius
1
@ Flavius ​​OK. Agradecimiento por el esfuerzo y por tomarse un momento para hacer adiciones. Sin embargo, después de pensarlo, parece razonable que la adición que hizo mereciera su propia respuesta independiente.
dreftymac
2
Una adición: una clase también es útil para agrupar datos de funciones para que no tenga que pasarlos en parámetros.
chiborg
1
+1 especialmente para su definición de "Marco". He oído a mucha gente intentar explicar qué es un marco y creo que el tuyo es el más fácil de entender.
TecBrat
1
amigo ... esta es la mejor explicación que he leído sobre oop vs procedural y he leído MUCHO! gran trabajo realmente efectivo, simple y directo al grano. tienes razón, la gente siempre usa ejemplos del mundo real y no es una forma fácil de entender nada, ¡es una mierda!
thechrishaddad
25

OOP no es más que un patrón de diseño. Si recién está comenzando, aprenda los conceptos básicos centrándose en el enfoque de procedimiento. Lo más importante es familiarizarse con los principios básicos como bucles, condiciones y llamar a otros procedimientos.

Mientras crea su código de procedimiento, conviértase en un hábito agregando métodos relacionados dentro de un solo archivo fuente. Aprenda a dividir sus procedimientos en unidades lógicas y luego comenzará a orientarse a objetos. Básicamente, un objeto no es más que una colección de métodos que están relacionados entre sí simplemente porque operan sobre el mismo conjunto de datos. (¡No hablamos de bases de datos aquí, sino de datos de aplicaciones!)

OO se utiliza principalmente para hacer que su código sea más lógico dividiendo todo en bloques simples. Combinando los bloques correctos, obtienes una aplicación completa. OO no es una bala de plata o un martillo de oro que resolverá todos tus problemas. Pero lo que sí hace es facilitar la comprensión del código.

Por otra parte, algunas personas todavía se las arreglan para hacer un completo desastre con los objetos, simplemente convirtiéndolos en enormes superobjetos con cientos de métodos. Estos objetos no difieren mucho de un enfoque de procedimiento normal, simplemente por la gran cantidad de métodos que se combinan sin ninguna lógica real. Es un error fácil de cometer cuando la gente empieza a hacer POO demasiado rápido.

Wim ten Brink
fuente
3
Encuentro que algún código OOP es mucho más confuso ... intente buscar en el interior de prestashop, por ejemplo.
AndrewC
Gran punto sobre Pretashop. Magento es una bestia humeante en sí mismo, pero decidimos quedarnos con él porque alternativas como Pretashop o WooComm son aún peores.
PKHunter
6

Deberías aprender ambos. Los objetos son solo una de las muchas abstracciones posibles que existen, y la abstracción es de lo que se trata en última instancia la programación. Dicho esto, comience con cosas de procedimiento y luego agregue objetos más tarde, porque las partes internas de los objetos de PHP son de procedimiento de todos modos.

En cuanto a los marcos; Primero aprenda los fundamentos del idioma, escriba programas experimentales desechables y demás. Más tarde se puede familiarizarse con los marcos y considerar a sí mismo si se encuentra alguna de ellas útil en algún contexto. Definitivamente no son obligatorios.

Joonas Pulakka
fuente
6

Para agregar las excelentes respuestas anteriores. Debería ver la programación orientada a objetos como una progresión natural de su estilo de codificación: cuando comience a escribir un programa pequeño, es posible que solo necesite juntar un par de líneas de código php, luego agruparlas en funciones y cuantas más funciones escriba, puede sentir la necesidad para organizarlos mejor en clases. OOP simplemente deja que tu estructura tus códigos mejor, lo que permite un mejor mantenimiento del código.

Rawdreeg
fuente
6

Los procedimientos php y oop usan el mismo código php. Entonces, la única diferencia es que con el procedimiento, te concentras en una tarea y eso es todo. En oop, organizas tu código usando patrones o fragmentos que se pueden reutilizar en muchas áreas diferentes del código.

La respuesta simple es que, necesita saber y comprender php. Puede aprenderlo en php.net. Una vez que lo entienda, puede comenzar a organizar su código en mandriles.

El código de procedimiento usa funciones, variables.

Una vez que se familiarice con las cosas, puede comenzar a organizar las funciones y variables en clases. Comenzamos a llamar a las funciones como métodos y a las variables como propiedades.

Buena suerte.

Edward Manda
fuente