Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // probando
- // si no existe definimos directory separator
- define('DS', "\\");
- define('NL', "\r\n");
- // standard includes
- function std_inc($file)
- {
- require(dirname(__FILE__).DS.$file);
- }
- std_inc('libs'.DS.'blockclosure.php');
- class alex
- {
- private $blockclosure;
- public function set_blockclosure($instancia)
- {
- $this->blockclosure = $instancia;
- }
- public function evento($params)
- {
- echo 'Alex- me dijeron: '.$params.NL;
- }
- public function decir($mensaje)
- {
- // vamos a mandarle un mensaje
- $jose = $this->blockclosure->getComponent();
- $jose->recibir($mensaje);
- }
- }
- class jose
- {
- private $blockclosure;
- public function set_blockclosure($instancia)
- {
- $this->blockclosure = $instancia;
- }
- public function recibir($mensaje)
- {
- echo 'Jose- me dijeron: '.$mensaje.NL;
- $this->responder('hola, como andas?');
- }
- public function responder($mensaje)
- {
- // vamos a mandarle un mensaje
- $this->blockclosure->eventHandler($mensaje);
- }
- }
- // creo alex
- $alex = new alex();
- // creo a josé
- $jose = new jose();
- // creo el bloque de ejecución diferida
- // diciendo cual es el hijo, cual es el padre, y donde recivirá los mensajes el padre (el padre tiene acceso directo al hijo, no necesita una funcion intermediaria específica)
- $bc = new BlockClosure($jose, $alex, 'evento');
- // ahora les digo a ambos cual va a ser su blockclosure
- $alex->set_blockclosure($bc);
- $jose->set_blockclosure($bc);
- // ahora obligamos a que alex le diga hola a jose
- $alex->decir('Hola');
- /** teóricamente jose recibirá el mensaje, y decidió responder, alex recibirá el mensaje y lo mostrará,
- * Tenga en cuenta que, josé podría responder en un momento diferente a su creación igual que alex podría seguir respondiendo o decir algo en otro momento, quizá
- * hasta se podrían mandar dos mensajes de un lado.
- * para esta demostración lo hice así, pero una utilidad podría ser el hecho de un sensor en el lugar de josé que avise cuando ocurra un evento
- * y el controlador principal de todo que sea alex.
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement