Haciendo hablar entre si dos clases en php con un bloque de ejecución diferida

Iniciado por alexander1712, Diciembre 03, 2013, 08:51:47 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Buenos días, hoy les traigo una publicación de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta como habrán leido en la publicación de josé ando medio ocupado, tengo que estudiar para el ingreso a la universidad, pero no puedo con mi genio y tenía que ponerme a hacer algo jajaja.
Hoy traigo un experimento que hice en base a la idea de un BlockClosure (bloque de ejecución diferida) que quería agregar a mi modelo de componentes en php


Bueno la cosa es simple, creo dos clases y hago que una hable con la otra, como si fuesen dos personas.
Sería muy fácil crear dos clases una que llame a la otra y le ejecute una función y que la otra haga lo mismo con la primera.

El problema surge, con la necesidad de hacer que hayan muchas clases que hagan esto, y que además, la clase que responde el mensaje de la primera no sepa realmente qué función es la que está llamando, sino que la clase que envía el primer mensaje le dice a la segunda clase, donde quiere que le responda.

Además por otra parte éste mecanismo trabaja con un bloque de ejecución diferida, de modo tal, que los mensajes no tienen por qué tener una secuencia específica, la idea es que esto funcione en por ejemplo un sensor de temperatura, cuando la temperatura alcanza x valor, la clase que controla el sensor, le avisa a la clase general que se alcanzó el máximo por ejemplo.

Ésto en otros lenguajes es lo que se conoce como eventos, on_change on_maximum por ejemplo, cuando la clase que gestiona el sensor recibe un cambio, puede llamar a la función on_change de la clase o código principal que creó el objeto. y nosotros le podemos decir a esa clase que haga x cosa, o no hacerlo.

Para probar que el blockclosure anda creé dos clases, y las instancié, luego creé una instancia del blockclosure, y le pasé ambas clases especificando a que función quería que llame.
A una clase le llamé alex, y a otra clase le llamé josé, luego obligo a mi primera clase a que le mande un mensaje a la segunda, y este ejemplo está programado para que cuando la segunda clase recibe un mensaje, responda al instante, aunque podrían pasar horas, o lo que fuera, el código no se queda a esperar que llegue un mensaje, la diferencia es que en éste código, puede o no llegar el mensaje, no hace falta que lo sepa, ya que cuando llegue un mensaje se ejecutará la función esa.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta les dejo en pastebin el codigo de ejemplo que prueba el block closure

y No tienes permitido ver los links. Registrarse o Entrar a mi cuenta les dejo el código del block closure también en pastebin.

Si te gusta la programación, te invito cordialmente a que visites No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, que habla sobre la programación profesional.

Saludos!

CitarÉsto en otros lenguajes es lo que se conoce como eventos, on_change on_maximum por ejemplo...

En realidad, al fondo de los "eventos en los otros lenguaje". Lo que en realidad se implementa es una técnica llamada Inversión de control.

También puedes investigar sobre Inyección de dependencia, aunque ya lo estas implementando en el source.

PD: Si te gusta la "programacion profesional", estoy seguro que estarías sumamente interesado en la creación de aplicaciones empresariales y las metodologías que estas conlleva. PHP todavía esta verde, y muchas cosas deben estar acopladas para poder funcionar en PHP.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
CitarÉsto en otros lenguajes es lo que se conoce como eventos, on_change on_maximum por ejemplo...

En realidad, al fondo de los "eventos en los otros lenguaje". Lo que en realidad se implementa es una técnica llamada Inversión de control.

También puedes investigar sobre Inyección de dependencia, aunque ya lo estas implementando en el source.

PD: Si te gusta la "programacion profesional", estoy seguro que estarías sumamente interesado en la creación de aplicaciones empresariales y las metodologías que estas conlleva. PHP todavía esta verde, y muchas cosas deben estar acopladas para poder funcionar en PHP.

Saludos.

interesante lo de inversión de control, investigaré de qué se trata.

si conocía inyección de dependencias hace un tiempo a tras vi que existía investigué y en ese momento ya lo usaba sin saberlo jajaja.

sobre el pd, estoy totalmente de acuerdo, en realidad originalmente programo en C++, pero php me interesó porque en mi opinión podría llegar a tener un buen futuro, además viendo que últimamente las nuevas versiones traen cosas que faltaban (por ejemplo traits que me permitieron hacer el famoso Property, consta que al llamar a una variable privada automáticamente se ejecute una función, dependiendo del caso setter o getter).-

entre otras cosas que publico en mi blog, incluyo mi investigación sobre criterios de calidad y otros temas del mismo estilo. Acá en argentina hay una certificación oficial de calidad que no es ISO9126, que certifica el proceso de fabricación de software, eso está muy interesante.

saludos!

Edito: la certificación se llamaba CMMI me costó acordarme jajaja, y evalúa la calidad del proceso de desarrollo y no tanto el producto final, está interesante, porque te obliga a aplicar criterios como los de reusabilidad, robustez, eficiencia, corrección, etc.