You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							87 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
	
	
							87 lines
						
					
					
						
							2.4 KiB
						
					
					
				| <?php | |
|  | |
| namespace yii\base; | |
|  | |
| class CBehavior extends CComponent implements IBehavior | |
| { | |
| 	private $_enabled; | |
| 	private $_owner; | |
|  | |
| 	/** | |
| 	 * Declares events and the corresponding event handler methods. | |
| 	 * The events are defined by the {@link owner} component, while the handler | |
| 	 * methods by the behavior class. The handlers will be attached to the corresponding | |
| 	 * events when the behavior is attached to the {@link owner} component; and they | |
| 	 * will be detached from the events when the behavior is detached from the component. | |
| 	 * @return array events (array keys) and the corresponding event handler methods (array values). | |
| 	 */ | |
| 	public function events() | |
| 	{ | |
| 		return array(); | |
| 	} | |
|  | |
| 	/** | |
| 	 * Attaches the behavior object to the component. | |
| 	 * The default implementation will set the {@link owner} property | |
| 	 * and attach event handlers as declared in {@link events}. | |
| 	 * Make sure you call the parent implementation if you override this method. | |
| 	 * @param CComponent $owner the component that this behavior is to be attached to. | |
| 	 */ | |
| 	public function attach($owner) | |
| 	{ | |
| 		$this->_owner=$owner; | |
| 		foreach($this->events() as $event=>$handler) | |
| 			$owner->attachEventHandler($event,array($this,$handler)); | |
| 	} | |
|  | |
| 	/** | |
| 	 * Detaches the behavior object from the component. | |
| 	 * The default implementation will unset the {@link owner} property | |
| 	 * and detach event handlers declared in {@link events}. | |
| 	 * Make sure you call the parent implementation if you override this method. | |
| 	 * @param CComponent $owner the component that this behavior is to be detached from. | |
| 	 */ | |
| 	public function detach($owner) | |
| 	{ | |
| 		foreach($this->events() as $event=>$handler) | |
| 			$owner->detachEventHandler($event,array($this,$handler)); | |
| 		$this->_owner=null; | |
| 	} | |
|  | |
| 	/** | |
| 	 * @return CComponent the owner component that this behavior is attached to. | |
| 	 */ | |
| 	public function getOwner() | |
| 	{ | |
| 		return $this->_owner; | |
| 	} | |
|  | |
| 	/** | |
| 	 * @return boolean whether this behavior is enabled | |
| 	 */ | |
| 	public function getEnabled() | |
| 	{ | |
| 		return $this->_enabled; | |
| 	} | |
|  | |
| 	/** | |
| 	 * @param boolean $value whether this behavior is enabled | |
| 	 */ | |
| 	public function setEnabled($value) | |
| 	{ | |
| 		if($this->_enabled!=$value && $this->_owner) | |
| 		{ | |
| 			if($value) | |
| 			{ | |
| 				foreach($this->events() as $event=>$handler) | |
| 					$this->_owner->attachEventHandler($event,array($this,$handler)); | |
| 			} | |
| 			else | |
| 			{ | |
| 				foreach($this->events() as $event=>$handler) | |
| 					$this->_owner->detachEventHandler($event,array($this,$handler)); | |
| 			} | |
| 		} | |
| 		$this->_enabled=$value; | |
| 	} | |
| }
 | |
| 
 |