2012-08-01 20 views
6

Estoy aprendiendo sobre módulos en línea y parece que los módulos en js y las clases en php son muy similares. Ambas funciones de grupo juntas para una codificación más fácil de entender. Las funciones se pueden declarar tanto en público como en privado. ¿Cómo son similares en el uso y cómo son diferentes?¿Cuál es la diferencia entre los módulos en js y las clases en php?

+1

No es una respuesta directa, pero las clases no son solo para facilitar la comprensión de las funciones. Su objetivo principal es la abstracción (ocultar los detalles de implementación), la encapsulación (solo permite ciertas acciones para cada objeto) y la modularidad (lo que hace que cada clase sea fácilmente portátil). – Palladium

Respuesta

2

Los módulos de Javascript ofrecen algunas características interesantes como la encapsulación, el estado privado e incluso la herencia de otros módulos. Si bien proporcionan algunas de las características de las clases, como en PHP, no lo son. Intentan construir sobre la función de Javascript existente para emular las clases, de ahí la confusión. es decir, son construidos para verse y sentirse como clases.

Los módulos de Javascript son instancias de una función anónima asignada a una variable. Por lo tanto, tienen todas las características de una función donde su código se ejecuta de arriba a abajo, tienen y algunas veces usan una declaración de retorno (en clases PHP no se pueden ejecutar sentencias directamente aparte de la definición y asignación de campos) e incluso tienen acceso a las variables globales. En PHP, por otro lado, una clase, o más bien sus métodos, no puede acceder a una variable que no está en la clase misma. Para acceder a variables globales, un método de clase o función estática tiene que llamar explícitamente a la variable, es decir, global $a, para importarla. En los módulos de js, todos los vars globales son accesibles, pero a veces uno los elige explicitarlos para un código más limpio (function(a){})(imported);

Otro tema importante es la abstracción de datos. Mientras que los módulos js proporcionan estados privados para los campos, las clases de PHP, al igual que C++, java, python, etc., proporcionan más seguridad a las propiedades. Permite utilizar clases base utilizando las palabras clave abstract class y interface, por lo que los métodos y atributos de la clase solo se definen o estructuran, pero no se utilizan.

Las clases de PHP también tienen constructores y destructores, que se llaman cuando se inicializa el objeto de clase y en la última mención utilizada para destruir el objeto. Por supuesto, puede crear funciones en módulos para que se ejecuten cuando lo desee, en PHP, por otro lado, las funciones en el método solo se ejecutan cuando son llamadas por el objeto, la clase u otras funciones.

En las clases hay funciones estáticas, estas se pueden llamar sin tener siquiera un objeto de la clase y ejecutarse independientemente de los objetos, por otro lado en js, todo es un objeto; que derrota el punto de las funciones estáticas.

Son similares en eso: ambos tienen herencia, donde puede ampliar un módulo existente con uno nuevo, y en PHP puede usar extends para heredar de una clase principal. Ambos tienen estados de datos privados que impiden el acceso externo, ambos agrupan y empaquetan datos y métodos, y ambos son impresionantes cuando se utilizan correctamente.

Cuestiones relacionadas