2011-03-23 13 views
6

¿Hay algo similar al módulo de ruby ​​ construir en php?Concepto de módulos en php similar a Ruby

Básicamente necesidad de crear una módulos de una confusión en las clases de b/w diferentes etc

sé que PHP tiene el concepto de mixins b/w diferentes clases, pero no está seguro acerca de los módulos.

+0

Mire esta discusión sobre la diferencia entre [Clases abstractas e interfaces] (http://stackoverflow.com/q/15960729/263858). –

Respuesta

10

PHP no tiene mixins del mismo modo que Ruby los tiene. Es decir, no puede cambiar nada de una clase una vez definida, y no puede agregar sanamente nuevos métodos a una instancia después de que se haya creado . PHP solo tiene el viejo mecanismo simple de herencia simple, interfaces, y composing traits en 5.4.

Lo más parecido que PHP podría tener a un módulo de Ruby será una clase. Lo más parecido que PHP podría tener a un mixin de Ruby es un rasgo, pero los rasgos son no dinámico. Deben ser referenciados por cualquier clase implementadora en el momento en que se define la clase. No pueden agregarse o modificarse en tiempo de ejecución y aplicarse a la clase como un todo, no a instancias individuales.

Mientras PHP 5.3 tiene espacios de nombres, están restringidos a mantener funciones, clases, constantes, rasgos e interfaces solamente, lo que significa no puede definir variables como un miembro de primera clase de un espacio de nombres. Intentar hacerlo da como resultado que se definan en el espacio de nombres raíz, que ciertamente no es lo que alguien querría. Además, no hay ningún mecanismo de herencia del espacio de nombres, solo un espacio de nombres mecanismo de referencia.

1: Si bien puede agregar variables de instancia (propiedades) después de crear un objeto simplemente haciendo referencia a ellas, esto se considera una mala práctica. Las propiedades también pueden contener funciones anónimas, pero abusar de las propiedades de esta manera para emular la adición de métodos también es una mala práctica.

+0

Me gusta su ejemplo, pero las constantes del espacio de nombres existen en 5.3. –

Cuestiones relacionadas