Source for file Observable.class.php

Documentation is available at Observable.class.php

  1. <?php
  2. /**
  3. * NAJAX Observable Namespace file.
  4. *
  5. * <p>This file defines the {@link NAJAX_Observable} Class.</p>
  6. * <p>This class is used internally only.</p>
  7. *
  8. * @author Stanimir Angeloff
  9. *
  10. * @package NAJAX
  11. *
  12. * @version 0.4.1.0
  13. *
  14. */
  15.  
  16. /**
  17. * NAJAX Observable Class.
  18. *
  19. * <p>This class is used to extend classes with events.</p>
  20. * <p>You should never use this class directly. Rather,
  21. * use the classes that extend this class.</p>
  22. *
  23. * @access private
  24. *
  25. * @author Stanimir Angeloff
  26. *
  27. * @package NAJAX
  28. *
  29. * @version 0.4.1.0
  30. *
  31. */
  32. class NAJAX_Observable
  33. {
  34. /**
  35. *
  36. * @access public
  37. *
  38. * @return bool
  39. *
  40. */
  41. function addObserver(&$observer, $className = 'NAJAX_Observable')
  42. {
  43. if (NAJAX_Utilities::getType($observer) != 'object') {
  44.  
  45. return false;
  46. }
  47.  
  48. if ( ! is_subclass_of($observer, 'NAJAX_Observer')) {
  49.  
  50. return false;
  51. }
  52.  
  53. if ( ! isset($GLOBALS['_NAJAX_OBSERVERS'])) {
  54.  
  55. $GLOBALS['_NAJAX_OBSERVERS'] = array();
  56. }
  57.  
  58. $globalObservers =& $GLOBALS['_NAJAX_OBSERVERS'];
  59.  
  60. $className = strtolower($className);
  61.  
  62. if ( ! isset($globalObservers[$className])) {
  63.  
  64. $globalObservers[$className] = array();
  65. }
  66.  
  67. $globalObservers[$className][] =& $observer;
  68.  
  69. return true;
  70. }
  71.  
  72. /**
  73. *
  74. * @access public
  75. *
  76. * @return bool
  77. *
  78. */
  79. function notifyObservers($event = 'default', $arg = null, $className = 'NAJAX_Observable')
  80. {
  81. if (empty($GLOBALS['_NAJAX_OBSERVERS'])) {
  82.  
  83. return true;
  84. }
  85.  
  86. $globalObservers =& $GLOBALS['_NAJAX_OBSERVERS'];
  87.  
  88. $className = strtolower($className);
  89.  
  90. if (empty($globalObservers[$className])) {
  91.  
  92. return true;
  93. }
  94.  
  95. $returnValue = true;
  96.  
  97. foreach ($globalObservers[$className] as $index => $observer) {
  98.  
  99. $eventValue = $observer->updateObserver($event, $arg);
  100.  
  101. if (NAJAX_Utilities::getType($eventValue) == 'bool') {
  102.  
  103. $returnValue &= $eventValue;
  104. }
  105. }
  106.  
  107. return $returnValue;
  108. }
  109. }
  110.  
  111. ?>

Documentation generated on Tue, 20 Sep 2005 21:40:16 +0300 by phpDocumentor 1.3.0RC3