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.
		
		
		
		
			
				
					88 lines
				
				2.4 KiB
			
		
		
			
		
	
	
					88 lines
				
				2.4 KiB
			| 
								 
											15 years ago
										 
									 | 
							
								<?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;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |