Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2013
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.08 KB | None | 0 0
  1. <?php
  2.  
  3. // probando
  4.  
  5. // si no existe definimos directory separator
  6. define('DS', "\\");
  7. define('NL', "\r\n");
  8.  
  9. // standard includes
  10. function std_inc($file)
  11. {
  12.     require(dirname(__FILE__).DS.$file);
  13. }
  14.  
  15. std_inc('libs'.DS.'blockclosure.php');
  16.  
  17. class alex
  18. {
  19.    
  20.     private $blockclosure;
  21.    
  22.     public function set_blockclosure($instancia)
  23.     {
  24.         $this->blockclosure = $instancia;
  25.     }
  26.    
  27.     public function evento($params)
  28.     {
  29.         echo 'Alex- me dijeron: '.$params.NL;
  30.     }
  31.    
  32.     public function decir($mensaje)
  33.     {
  34.         // vamos a mandarle un mensaje
  35.         $jose = $this->blockclosure->getComponent();
  36.         $jose->recibir($mensaje);
  37.     }
  38. }
  39.  
  40. class jose
  41. {
  42.    
  43.     private $blockclosure;
  44.    
  45.     public function set_blockclosure($instancia)
  46.     {
  47.         $this->blockclosure = $instancia;
  48.     }
  49.    
  50.     public function recibir($mensaje)
  51.     {
  52.         echo 'Jose- me dijeron: '.$mensaje.NL;
  53.         $this->responder('hola, como andas?');
  54.     }
  55.    
  56.     public function responder($mensaje)
  57.     {
  58.         // vamos a mandarle un mensaje
  59.         $this->blockclosure->eventHandler($mensaje);
  60.     }
  61.    
  62. }
  63.  
  64. // creo alex
  65. $alex = new alex();
  66. // creo a josé
  67. $jose = new jose();
  68. // creo el bloque de ejecución diferida
  69. // 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)
  70. $bc = new BlockClosure($jose, $alex, 'evento');
  71. // ahora les digo a ambos cual va a ser su blockclosure
  72. $alex->set_blockclosure($bc);
  73. $jose->set_blockclosure($bc);
  74.  
  75. // ahora obligamos a que alex le diga hola a jose
  76. $alex->decir('Hola');
  77.  
  78. /** teóricamente jose recibirá el mensaje, y decidió responder, alex recibirá el mensaje y lo mostrará,
  79.  * 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á
  80.  * hasta se podrían mandar dos mensajes de un lado.
  81.  * 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
  82.  * y el controlador principal de todo que sea alex.
  83.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement