Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
76bcfd0d
Commit
76bcfd0d
authored
Jul 17, 2011
by
Qiang Xue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
finished behavior and event.
parent
2390da8c
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
52 additions
and
32 deletions
+52
-32
Behavior.php
framework/base/Behavior.php
+51
-31
Event.php
framework/base/Event.php
+1
-1
No files found.
framework/base/Behavior.php
View file @
76bcfd0d
...
@@ -10,18 +10,34 @@
...
@@ -10,18 +10,34 @@
namespace
yii\base
;
namespace
yii\base
;
/**
* Behavior is the base class for all behavior classes.
*
* A behavior can be used to enhance the functionality of an existing component.
* In particular, it can "inject" its own properties and events into the component
* and make them directly accessible via the component.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
class
Behavior
extends
Component
class
Behavior
extends
Component
{
{
private
$_enabled
;
private
$_enabled
;
private
$_owner
;
private
$_owner
;
/**
/**
* Declares events and the corresponding event handler methods.
* Declares event handlers for the [[owner]]'s events.
* 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
* Child classes may override this method to declare which methods in this behavior
* events when the behavior is attached to the {@link owner} component; and they
* should be attached to which events of the [[owner]] component.
* will be detached from the events when the behavior is detached from the component.
* The methods will be attached to the [[owner]]'s events when the behavior is
* @return array events (array keys) and the corresponding event handler methods (array values).
* attached to the owner; and they will be detached from the events when
* the behavior is detached from the component.
*
* The method should return an array whose keys are the names of the owner's events
* and values are the names of the behavior methods.
*
* @return array events (keys) and the corresponding behavior method names (values).
*/
*/
public
function
events
()
public
function
events
()
{
{
...
@@ -30,34 +46,37 @@ class Behavior extends Component
...
@@ -30,34 +46,37 @@ class Behavior extends Component
/**
/**
* Attaches the behavior object to the component.
* Attaches the behavior object to the component.
* The default implementation will set the
{@link owner}
property
* The default implementation will set the
[[owner]]
property
* and attach event handlers as declared in
{@link events}
.
* and attach event handlers as declared in
[[events]]
.
* Make sure you call the parent implementation if you override this method.
* Make sure you call the parent implementation if you override this method.
* @param C
C
omponent $owner the component that this behavior is to be attached to.
* @param Component $owner the component that this behavior is to be attached to.
*/
*/
public
function
attach
(
$owner
)
public
function
attach
(
$owner
)
{
{
$this
->
_owner
=
$owner
;
$this
->
_owner
=
$owner
;
foreach
(
$this
->
events
()
as
$event
=>
$handler
)
foreach
(
$this
->
events
()
as
$event
=>
$handler
)
{
$owner
->
attachEventHandler
(
$event
,
array
(
$this
,
$handler
));
$owner
->
attachEventHandler
(
$event
,
array
(
$this
,
$handler
));
}
}
}
/**
/**
* Detaches the behavior object from the component.
* Detaches the behavior object from the component.
* The default implementation will unset the
{@link owner}
property
* The default implementation will unset the
[[owner]]
property
* and detach event handlers declared in
{@link events}
.
* and detach event handlers declared in
[[events]]
.
* Make sure you call the parent implementation if you override this method.
* Make sure you call the parent implementation if you override this method.
* @param C
C
omponent $owner the component that this behavior is to be detached from.
* @param Component $owner the component that this behavior is to be detached from.
*/
*/
public
function
detach
(
$owner
)
public
function
detach
(
$owner
)
{
{
foreach
(
$this
->
events
()
as
$event
=>
$handler
)
foreach
(
$this
->
events
()
as
$event
=>
$handler
)
{
$owner
->
detachEventHandler
(
$event
,
array
(
$this
,
$handler
));
$owner
->
detachEventHandler
(
$event
,
array
(
$this
,
$handler
));
$this
->
_owner
=
null
;
}
$this
->
_owner
=
null
;
}
}
/**
/**
* @return CComponent the owner component that this behavior is attached to.
* Returns the owner component that this behavior is attached to.
* @return Component the owner component that this behavior is attached to.
*/
*/
public
function
getOwner
()
public
function
getOwner
()
{
{
...
@@ -65,6 +84,7 @@ class Behavior extends Component
...
@@ -65,6 +84,7 @@ class Behavior extends Component
}
}
/**
/**
* Returns a value indicating whether this behavior is enabled.
* @return boolean whether this behavior is enabled
* @return boolean whether this behavior is enabled
*/
*/
public
function
getEnabled
()
public
function
getEnabled
()
...
@@ -73,23 +93,23 @@ class Behavior extends Component
...
@@ -73,23 +93,23 @@ class Behavior extends Component
}
}
/**
/**
* @param boolean $value whether this behavior is enabled
* Enables or disables the behavior.
* @param boolean $value whether this behavior should be enabled.
*/
*/
public
function
setEnabled
(
$value
)
public
function
setEnabled
(
$value
)
{
{
if
(
$this
->
_enabled
!=
$value
&&
$this
->
_owner
)
if
(
$this
->
_enabled
!=
$value
&&
$this
->
_owner
)
{
{
if
(
$value
)
{
if
(
$value
)
foreach
(
$this
->
events
()
as
$event
=>
$handler
)
{
{
$this
->
_owner
->
attachEventHandler
(
$event
,
array
(
$this
,
$handler
));
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
));
}
}
else
{
foreach
(
$this
->
events
()
as
$event
=>
$handler
)
$this
->
_owner
->
detachEventHandler
(
$event
,
array
(
$this
,
$handler
));
}
}
}
}
$this
->
_enabled
=
$value
;
$this
->
_enabled
=
$value
;
}
}
}
}
framework/base/Event.php
View file @
76bcfd0d
...
@@ -32,7 +32,7 @@ class Event extends Component
...
@@ -32,7 +32,7 @@ class Event extends Component
* @var boolean whether the event is handled. Defaults to false.
* @var boolean whether the event is handled. Defaults to false.
* When a handler sets this to be true, the rest of the uninvoked event handlers will be canceled.
* When a handler sets this to be true, the rest of the uninvoked event handlers will be canceled.
*/
*/
public
$handled
=
false
;
public
$handled
=
false
;
/**
/**
* Constructor.
* Constructor.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment