⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 observable.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
字号:
<?php/*** @version		$Id:observer.php 6961 2007-03-15 16:06:53Z tcp $* @package		Joomla.Framework* @subpackage	Base* @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.* @license		GNU/GPL, see LICENSE.php* Joomla! is free software. This version may have been modified pursuant* to the GNU General Public License, and as distributed it includes or* is derivative of works licensed under the GNU General Public License or* other free or open source software licenses.* See COPYRIGHT.php for copyright notices and details.*/// Check to ensure this file is within the rest of the frameworkdefined('JPATH_BASE') or die();/** * Abstract observable class to implement the observer design pattern * * @abstract * @package		Joomla.Framework * @subpackage	Base * @since		1.5 */class JObservable extends JObject{	/**	 * An array of Observer objects to notify	 *	 * @access private	 * @var array	 */	var $_observers = array();	/**	 * The state of the observable object	 *	 * @access private	 * @var mixed	 */	var $_state = null;	/**	 * Constructor	 */	function __construct() {		$this->_observers = array();	}	/**	 * Get the state of the JObservable object	 *	 * @access public	 * @return mixed The state of the object	 * @since 1.5	 */	function getState() {		return $this->_state;	}	/**	 * Update each attached observer object and return an array of their return values	 *	 * @access public	 * @return array Array of return values from the observers	 * @since 1.5	 */	function notify()	{		// Iterate through the _observers array		foreach ($this->_observers as $observer) {			$return[] = $observer->update();		}		return $return;	}	/**	 * Attach an observer object	 *	 * @access public	 * @param object $observer An observer object to attach	 * @return void	 * @since 1.5	 */	function attach( &$observer)	{		// Make sure we haven't already attached this object as an observer		if (is_object($observer))		{			$class = get_class($observer);			foreach ($this->_observers as $check) {				if (is_a($check, $class)) {					return;				}			}			$this->_observers[] =& $observer;		} else {			$this->_observers[] =& $observer;		}	}	/**	 * Detach an observer object	 *	 * @access public	 * @param object $observer An observer object to detach	 * @return boolean True if the observer object was detached	 * @since 1.5	 */	function detach( $observer)	{		// Initialize variables		$retval = false;		$key = array_search($observer, $this->_observers);		if ( $key !== false )		{			unset($this->_observers[$key]);			$retval = true;		}		return $retval;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -