| Server IP : 54.36.91.62 / Your IP : 216.73.217.112 Web Server : Apache System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : coopiak ( 151928) PHP Version : 8.3.23 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/coopiak/amisdesseniors-fr/nice/libraries/CBLib/CBLib/Observer/ |
Upload File : |
<?php
/**
* CBLib, Community Builder Library(TM)
* @version $Id: 10/19/13 2:01 PM $
* @package CBLib\Observer
* @copyright (C) 2004-2025 www.joomlapolis.com / Lightning MultiCom SA - and its licensors, all rights reserved
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU/GPL version 2
*/
namespace CBLib\Observer;
defined('CBLIB') or die();
/**
* CBLib\Observer\ObserverUpdater Class Observer updater pattern implementation
*
* @package CBLib\Observer
*/
class ObserverUpdater implements ObserverUpdaterInterface {
/**
* Generic ObserverInterface observers for this ObservableInterface
*
* @var ObserverInterface[]
*/
protected $observers = array();
/**
* Process observers (useful when a class extends significantly an observerved method, and calls observers itself
*
* @var boolean
*/
protected $doCallObservers = true;
/**
* Constructor
*
* @param ObservableInterface $observable The observable subject object
*/
public function __construct(ObservableInterface $observable)
{
// Not yet needed, but possible: $this->observable = $observable;
}
/**
* Adds an observer to the ObservableInterface instance updated by this
* This method can be called fron ObservableInterface::attachObserver
*
* @param ObserverInterface $observer The observer object
* @return void
*/
public function attachObserver(ObserverInterface $observer)
{
$this->observers[get_class($observer)] = $observer;
}
/**
* Removes $observer from the ObservableInterface instance updated by this
*
* @param ObserverInterface $observer The observer object
* @return void
*/
public function detachObserver(ObserverInterface $observer)
{
unset( $this->observers[get_class($observer)] );
}
/**
* Gets the instance of the observer of class $observerClass
*
* @param string $observerClass The class name of the observer
* @return ObserverInterface|null The observer object of this class if any
*/
public function getObserverOfClass($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
*/
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
*/
public function doCallObservers($enabled)
{
$oldState = $this->doCallObservers;
$this->doCallObservers = $enabled;
return $oldState;
}
}