Файловый менеджер - Редактировать - /home/wuectly/www/03cbe/observer.zip
Назад
PK �t!]A�$� � updater/interface.phpnu &1i� <?php /** * @package Joomla.Platform * @subpackage Observer * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; /** * Observer updater pattern implementation for Joomla * * @since 3.1.2 */ interface JObserverUpdaterInterface { /** * Constructor * * @param JObservableInterface $observable The observable subject object * * @since 3.1.2 */ public function __construct(JObservableInterface $observable); /** * Adds an observer to the JObservableInterface instance updated by this * This method can be called from JObservableInterface::attachObserver * * @param JObserverInterface $observer The observer object * * @return void * * @since 3.1.2 */ public function attachObserver(JObserverInterface $observer); /** * Call all observers for $event with $params * * @param string $event Event name (function name in observer) * @param array $params Params of event (params in observer function) * * @return void * * @since 3.1.2 */ public function update($event, $params); /** * Enable/Disable calling of observers (this is useful when calling parent:: function * * @param boolean $enabled Enable (true) or Disable (false) the observer events * * @return boolean Returns old state * * @since 3.1.2 */ public function doCallObservers($enabled); } PK �t!]Эe interface.phpnu &1i� <?php /** * @package Joomla.Platform * @subpackage Observer * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; /** * Observer pattern interface for Joomla * * A class that wants to observe another class must: * * 1) Add: implements JObserverInterface * to its class * * 2) Implement a constructor, that can look like this: * public function __construct(JObservableInterface $observableObject) * { * $observableObject->attachObserver($this); * $this->observableObject = $observableObject; * } * * 3) and must implement the instantiator function createObserver() below, e.g. as follows: * public static function createObserver(JObservableInterface $observableObject, $params = array()) * { * $observer = new self($observableObject); * $observer->... = $params['...']; ... * return $observer; * } * * 4) Then add functions corresponding to the events to be observed, * E.g. to respond to event: $this->_observers->update('onBeforeLoad', array($keys, $reset)); * following function is needed in the observer: * public function onBeforeLoad($keys, $reset) { ... } * * 5) Finally, the binding is made outside the observable and observer classes, using: * JObserverMapper::addObserverClassToClass('ObserverClassname', 'ObservableClassname', array('paramName' => 'paramValue')); * where the last array will be provided to the observer instanciator function createObserver. * * @since 3.1.2 */ interface JObserverInterface { /** * Creates the associated observer instance and attaches it to the $observableObject * * @param JObservableInterface $observableObject The observable subject object * @param array $params Params for this observer * * @return JObserverInterface * * @since 3.1.2 */ public static function createObserver(JObservableInterface $observableObject, $params = array()); } PK �t!]��.�� � updater.phpnu &1i� <?php /** * @package Joomla.Platform * @subpackage Observer * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; /** * Observer updater pattern implementation for Joomla * * @since 3.1.2 */ class JObserverUpdater implements JObserverUpdaterInterface { /** * Holds the key aliases for observers. * * @var array * @since 3.9.0 */ protected $aliases = array(); /** * Generic JObserverInterface observers for this JObservableInterface * * @var JObserverInterface * @since 3.1.2 */ protected $observers = array(); /** * Process observers (useful when a class extends significantly an observed method, and calls observers itself * * @var boolean * @since 3.1.2 */ protected $doCallObservers = true; /** * Constructor * * @param JObservableInterface $observable The observable subject object * * @since 3.1.2 */ public function __construct(JObservableInterface $observable) { // Not yet needed, but possible: $this->observable = $observable; } /** * Adds an observer to the JObservableInterface instance updated by this * This method can be called from JObservableInterface::attachObserver * * @param JObserverInterface $observer The observer object * * @return void * * @since 3.1.2 */ public function attachObserver(JObserverInterface $observer) { $class = get_class($observer); // Also register the alias if exists foreach (JLoader::getDeprecatedAliases() as $alias) { $realClass = trim($alias['new'], '\\'); // Check if we have an alias for the observer class if ($realClass === $class) { $aliasClass = trim($alias['old'], '\\'); // Add an alias to known aliases $this->aliases[$aliasClass] = $class; } } // Register the real class $this->observers[$class] = $observer; } /** * Removes an observer from the JObservableInterface instance updated by this * This method can be called from JObservableInterface::attachObserver * * @param String $observer The observer class name * * @return void * * @since 3.6.0 */ public function detachObserver($observer) { $observer = trim($observer, '\\'); if (isset($this->aliases[$observer])) { $observer = $this->aliases[$observer]; } if (isset($this->observers[$observer])) { unset($this->observers[$observer]); } } /** * Gets the instance of the observer of class $observerClass * * @param string $observerClass The class name of the observer * * @return JTableObserver|null The observer object of this class if any * * @since 3.1.2 */ public function getObserverOfClass($observerClass) { $observerClass = trim($observerClass, '\\'); if (isset($this->aliases[$observerClass])) { $observerClass = $this->aliases[$observerClass]; } if (isset($this->observers[$observerClass])) { return $this->observers[$observerClass]; } return null; } /** * Call all observers for $event with $params * * @param string $event Name of the event * @param array $params Params of the event * * @return void * * @since 3.1.2 */ public function update($event, $params) { if ($this->doCallObservers) { foreach ($this->observers as $observer) { $eventListener = array($observer, $event); if (is_callable($eventListener)) { call_user_func_array($eventListener, $params); } } } } /** * Enable/Disable calling of observers (this is useful when calling parent:: function * * @param boolean $enabled Enable (true) or Disable (false) the observer events * * @return boolean Returns old state * * @since 3.1.2 */ public function doCallObservers($enabled) { $oldState = $this->doCallObservers; $this->doCallObservers = $enabled; return $oldState; } } PK �t!]'�˂ � mapper.phpnu &1i� <?php /** * @package Joomla.Platform * @subpackage Observer * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; /** * Observer mapping pattern implementation for Joomla * * @since 3.1.2 */ class JObserverMapper { /** * Array: array( JObservableInterface_classname => array( JObserverInterface_classname => array( paramname => param, .... ) ) ) * * @var array * @since 3.1.2 */ protected static $observations = array(); /** * Adds a mapping to observe $observerClass subjects with $observableClass observer/listener, attaching it on creation with $params * on $observableClass instance creations * * @param string $observerClass The name of the observer class (implementing JObserverInterface) * @param string $observableClass The name of the observable class (implementing JObservableInterface) * @param array|boolean $params The params to give to the JObserverInterface::createObserver() function, or false to remove mapping * * @return void * * @since 3.1.2 */ public static function addObserverClassToClass($observerClass, $observableClass, $params = array()) { if ($params !== false) { static::$observations[$observableClass][$observerClass] = $params; } else { unset(static::$observations[$observableClass][$observerClass]); } } /** * Attaches all applicable observers to an $observableObject * * @param JObservableInterface $observableObject The observable subject object * * @return void * * @since 3.1.2 */ public static function attachAllObservers(JObservableInterface $observableObject) { $observableClass = get_class($observableObject); while ($observableClass != false) { // Attach applicable Observers for the class to the Observable subject: if (isset(static::$observations[$observableClass])) { foreach (static::$observations[$observableClass] as $observerClass => $params) { // Attach an Observer to the Observable subject: /** * @var JObserverInterface $observerClass */ $observerClass::createObserver($observableObject, $params); } } // Get parent class name (or false if none), and redo the above on it: $observableClass = get_parent_class($observableClass); } } } PK �t!]`�{Z wrapper/mapper.phpnu &1i� <?php /** * @package Joomla.Platform * @subpackage Observer * * @copyright (C) 2014 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; /** * Wrapper class for JObserverMapper * * @package Joomla.Platform * @subpackage Observer * @since 3.4 */ class JObserverWrapperMapper { /** * Helper wrapper method for addObserverClassToClass * * @param string $observerClass The name of the observer class (implementing JObserverInterface). * @param string $observableClass The name of the observable class (implementing JObservableInterface). * @param array|boolean $params The params to give to the JObserverInterface::createObserver() function, or false to remove mapping. * * @return void * * @see JObserverMapper::addObserverClassToClass * @since 3.4 */ public function addObserverClassToClass($observerClass, $observableClass, $params = array()) { return JObserverMapper::addObserverClassToClass($observerClass, $observableClass, $params); } /** * Helper wrapper method for attachAllObservers * * @param JObservableInterface $observableObject The observable subject object. * * @return void * * @see JObserverMapper::attachAllObservers * @since 3.4 */ public function attachAllObservers(JObservableInterface $observableObject) { return JObserverMapper::attachAllObservers($observableObject); } } PK �t!]A�$� � updater/interface.phpnu &1i� PK �t!]Эe $ interface.phpnu &1i� PK �t!]��.�� � n updater.phpnu &1i� PK �t!]'�˂ � 0 mapper.phpnu &1i� PK �t!]`�{Z �'