PluginObserver.class.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. /* vim: set expandtab sw=4 ts=4 sts=4: */
  3. /**
  4. * The PluginObserver class is used alongside PluginManager to implement
  5. * the Observer Design Pattern.
  6. *
  7. * @package PhpMyAdmin
  8. */
  9. if (! defined('PHPMYADMIN')) {
  10. exit;
  11. }
  12. /* Each PluginObserver instance contains a PluginManager instance */
  13. require_once 'PluginManager.class.php';
  14. /**
  15. * This class implements the SplObserver interface
  16. *
  17. * @package PhpMyAdmin
  18. * @link http://php.net/manual/en/class.splobserver.php
  19. */
  20. abstract class PluginObserver implements SplObserver
  21. {
  22. /**
  23. * PluginManager instance that contains a list with all the observer
  24. * plugins that attach to it
  25. *
  26. * @var type PluginManager
  27. */
  28. private $_pluginManager;
  29. /**
  30. * Constructor
  31. *
  32. * @param PluginManager $pluginManager The Plugin Manager instance
  33. */
  34. public function __construct($pluginManager)
  35. {
  36. $this->_pluginManager = $pluginManager;
  37. }
  38. /**
  39. * This method is called when any PluginManager to which the observer
  40. * is attached calls PluginManager::notify()
  41. *
  42. * TODO Declare this function abstract, removing its body,
  43. * as soon as we drop support for PHP 5.2.x.
  44. * See bug #3538655.
  45. *
  46. * @param SplSubject $subject The PluginManager notifying the observer
  47. * of an update.
  48. *
  49. * @return void
  50. */
  51. public function update (SplSubject $subject)
  52. {
  53. throw new Exception(
  54. 'PluginObserver::update must be overridden in child classes.'
  55. );
  56. }
  57. /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
  58. /**
  59. * Gets the PluginManager instance that contains the list with all the
  60. * plugins that attached to it
  61. *
  62. * @return type PluginManager
  63. */
  64. public function getPluginManager()
  65. {
  66. return $this->_pluginManager;
  67. }
  68. /**
  69. * Setter for $_pluginManager
  70. *
  71. * @param PluginManager $_pluginManager the private instance that it will
  72. * attach to
  73. *
  74. * @return void
  75. */
  76. public function setPluginManager($_pluginManager)
  77. {
  78. $this->_pluginManager = $_pluginManager;
  79. }
  80. }
  81. ?>