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
373e6a70
Commit
373e6a70
authored
Jan 18, 2013
by
Qiang Xue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactored event declaration convention.
parent
b181bc1c
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
75 additions
and
36 deletions
+75
-36
Model.php
framework/base/Model.php
+12
-6
ActiveRecord.php
framework/db/ActiveRecord.php
+43
-18
Connection.php
framework/db/Connection.php
+6
-3
Logger.php
framework/logging/Logger.php
+14
-9
No files found.
framework/base/Model.php
View file @
373e6a70
...
@@ -38,15 +38,21 @@ use yii\validators\RequiredValidator;
...
@@ -38,15 +38,21 @@ use yii\validators\RequiredValidator;
* @property array $attributes Attribute values (name=>value).
* @property array $attributes Attribute values (name=>value).
* @property string $scenario The scenario that this model is in.
* @property string $scenario The scenario that this model is in.
*
*
* @event ModelEvent beforeValidate an event raised at the beginning of [[validate()]]. You may set
* [[ModelEvent::isValid]] to be false to stop the validation.
* @event Event afterValidate an event raised at the end of [[validate()]]
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
* @since 2.0
*/
*/
class
Model
extends
Component
implements
\IteratorAggregate
,
\ArrayAccess
class
Model
extends
Component
implements
\IteratorAggregate
,
\ArrayAccess
{
{
/**
* @event ModelEvent an event raised at the beginning of [[validate()]]. You may set
* [[ModelEvent::isValid]] to be false to stop the validation.
*/
const
EVENT_BEFORE_VALIDATE
=
'beforeValidate'
;
/**
* @event Event an event raised at the end of [[validate()]]
*/
const
EVENT_AFTER_VALIDATE
=
'afterValidate'
;
private
static
$_attributes
=
array
();
// class name => array of attribute names
private
static
$_attributes
=
array
();
// class name => array of attribute names
private
$_errors
;
// attribute name => array of errors
private
$_errors
;
// attribute name => array of errors
private
$_validators
;
// Vector of validators
private
$_validators
;
// Vector of validators
...
@@ -250,7 +256,7 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
...
@@ -250,7 +256,7 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
public
function
beforeValidate
()
public
function
beforeValidate
()
{
{
$event
=
new
ModelEvent
(
$this
);
$event
=
new
ModelEvent
(
$this
);
$this
->
trigger
(
'beforeValidate'
,
$event
);
$this
->
trigger
(
self
::
EVENT_BEFORE_VALIDATE
,
$event
);
return
$event
->
isValid
;
return
$event
->
isValid
;
}
}
...
@@ -262,7 +268,7 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
...
@@ -262,7 +268,7 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
*/
*/
public
function
afterValidate
()
public
function
afterValidate
()
{
{
$this
->
trigger
(
'afterValidate'
);
$this
->
trigger
(
self
::
EVENT_AFTER_VALIDATE
);
}
}
/**
/**
...
...
framework/db/ActiveRecord.php
View file @
373e6a70
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
namespace
yii\db
;
namespace
yii\db
;
use
yii\base\Model
;
use
yii\base\Model
;
use
yii\base\Event
;
use
yii\base\ModelEvent
;
use
yii\base\ModelEvent
;
use
yii\base\UnknownMethodException
;
use
yii\base\UnknownMethodException
;
use
yii\base\InvalidCallException
;
use
yii\base\InvalidCallException
;
...
@@ -32,24 +33,48 @@ use yii\util\StringHelper;
...
@@ -32,24 +33,48 @@ use yii\util\StringHelper;
* @property mixed $primaryKey the primary key value.
* @property mixed $primaryKey the primary key value.
* @property mixed $oldPrimaryKey the old primary key value.
* @property mixed $oldPrimaryKey the old primary key value.
*
*
* @event ModelEvent init an event that is triggered when the record is initialized (in [[init()]]).
* @event ModelEvent afterFind an event that is triggered after the record is created and populated with query result.
* @event ModelEvent beforeInsert an event that is triggered before inserting a record.
* You may set [[ModelEvent::isValid]] to be false to stop the insertion.
* @event Event afterInsert an event that is triggered before inserting a record.
* @event ModelEvent beforeUpdate an event that is triggered before updating a record.
* You may set [[ModelEvent::isValid]] to be false to stop the update.
* @event Event afterUpdate an event that is triggered before updating a record.
* @event ModelEvent beforeDelete an event that is triggered before deleting a record.
* You may set [[ModelEvent::isValid]] to be false to stop the deletion.
* @event Event afterDelete an event that is triggered after deleting a record.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
* @since 2.0
*/
*/
class
ActiveRecord
extends
Model
class
ActiveRecord
extends
Model
{
{
/**
/**
* @event Event an event that is triggered when the record is initialized via [[init()]].
*/
const
EVENT_INIT
=
'init'
;
/**
* @event Event an event that is triggered after the record is created and populated with query result.
*/
const
EVENT_AFTER_FIND
=
'afterFind'
;
/**
* @event ModelEvent an event that is triggered before inserting a record.
* You may set [[ModelEvent::isValid]] to be false to stop the insertion.
*/
const
EVENT_BEFORE_INSERT
=
'beforeInsert'
;
/**
* @event Event an event that is triggered after a record is inserted.
*/
const
EVENT_AFTER_INSERT
=
'afterInsert'
;
/**
* @event ModelEvent an event that is triggered before updating a record.
* You may set [[ModelEvent::isValid]] to be false to stop the update.
*/
const
EVENT_BEFORE_UPDATE
=
'beforeUpdate'
;
/**
* @event Event an event that is triggered after a record is updated.
*/
const
EVENT_AFTER_UPDATE
=
'afterUpdate'
;
/**
* @event ModelEvent an event that is triggered before deleting a record.
* You may set [[ModelEvent::isValid]] to be false to stop the deletion.
*/
const
EVENT_BEFORE_DELETE
=
'beforeDelete'
;
/**
* @event Event an event that is triggered after a record is deleted.
*/
const
EVENT_AFTER_DELETE
=
'afterDelete'
;
/**
* @var array attribute values indexed by attribute names
* @var array attribute values indexed by attribute names
*/
*/
private
$_attributes
=
array
();
private
$_attributes
=
array
();
...
@@ -773,7 +798,7 @@ class ActiveRecord extends Model
...
@@ -773,7 +798,7 @@ class ActiveRecord extends Model
public
function
init
()
public
function
init
()
{
{
parent
::
init
();
parent
::
init
();
$this
->
trigger
(
'init'
);
$this
->
trigger
(
self
::
EVENT_INIT
);
}
}
/**
/**
...
@@ -784,7 +809,7 @@ class ActiveRecord extends Model
...
@@ -784,7 +809,7 @@ class ActiveRecord extends Model
*/
*/
public
function
afterFind
()
public
function
afterFind
()
{
{
$this
->
trigger
(
'afterFind'
);
$this
->
trigger
(
self
::
EVENT_AFTER_FIND
);
}
}
/**
/**
...
@@ -823,7 +848,7 @@ class ActiveRecord extends Model
...
@@ -823,7 +848,7 @@ class ActiveRecord extends Model
public
function
beforeSave
(
$insert
)
public
function
beforeSave
(
$insert
)
{
{
$event
=
new
ModelEvent
(
$this
);
$event
=
new
ModelEvent
(
$this
);
$this
->
trigger
(
$insert
?
'beforeInsert'
:
'beforeUpdate'
,
$event
);
$this
->
trigger
(
$insert
?
self
::
EVENT_BEFORE_INSERT
:
self
::
EVENT_BEFORE_UPDATE
,
$event
);
return
$event
->
isValid
;
return
$event
->
isValid
;
}
}
...
@@ -838,7 +863,7 @@ class ActiveRecord extends Model
...
@@ -838,7 +863,7 @@ class ActiveRecord extends Model
*/
*/
public
function
afterSave
(
$insert
)
public
function
afterSave
(
$insert
)
{
{
$this
->
trigger
(
$insert
?
'afterInsert'
:
'afterUpdate'
);
$this
->
trigger
(
$insert
?
self
::
EVENT_AFTER_INSERT
:
self
::
EVENT_AFTER_UPDATE
);
}
}
/**
/**
...
@@ -863,7 +888,7 @@ class ActiveRecord extends Model
...
@@ -863,7 +888,7 @@ class ActiveRecord extends Model
public
function
beforeDelete
()
public
function
beforeDelete
()
{
{
$event
=
new
ModelEvent
(
$this
);
$event
=
new
ModelEvent
(
$this
);
$this
->
trigger
(
'beforeDelete'
,
$event
);
$this
->
trigger
(
self
::
EVENT_BEFORE_DELETE
,
$event
);
return
$event
->
isValid
;
return
$event
->
isValid
;
}
}
...
@@ -875,7 +900,7 @@ class ActiveRecord extends Model
...
@@ -875,7 +900,7 @@ class ActiveRecord extends Model
*/
*/
public
function
afterDelete
()
public
function
afterDelete
()
{
{
$this
->
trigger
(
'afterDelete'
);
$this
->
trigger
(
self
::
EVENT_AFTER_DELETE
);
}
}
/**
/**
...
...
framework/db/Connection.php
View file @
373e6a70
...
@@ -95,14 +95,17 @@ use yii\base\NotSupportedException;
...
@@ -95,14 +95,17 @@ use yii\base\NotSupportedException;
* @property string $driverName Name of the DB driver currently being used.
* @property string $driverName Name of the DB driver currently being used.
* @property array $querySummary The statistical results of SQL queries.
* @property array $querySummary The statistical results of SQL queries.
*
*
* @event Event afterOpen this event is triggered after a DB connection is established
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
* @since 2.0
*/
*/
class
Connection
extends
\yii\base\ApplicationComponent
class
Connection
extends
\yii\base\ApplicationComponent
{
{
/**
/**
* @event Event an event that is triggered after a DB connection is established
*/
const
EVENT_AFTER_OPEN
=
'afterOpen'
;
/**
* @var string the Data Source Name, or DSN, contains the information required to connect to the database.
* @var string the Data Source Name, or DSN, contains the information required to connect to the database.
* Please refer to the [PHP manual](http://www.php.net/manual/en/function.PDO-construct.php) on
* Please refer to the [PHP manual](http://www.php.net/manual/en/function.PDO-construct.php) on
* the format of the DSN string.
* the format of the DSN string.
...
@@ -382,7 +385,7 @@ class Connection extends \yii\base\ApplicationComponent
...
@@ -382,7 +385,7 @@ class Connection extends \yii\base\ApplicationComponent
if
(
$this
->
charset
!==
null
&&
in_array
(
$this
->
getDriverName
(),
array
(
'pgsql'
,
'mysql'
,
'mysqli'
)))
{
if
(
$this
->
charset
!==
null
&&
in_array
(
$this
->
getDriverName
(),
array
(
'pgsql'
,
'mysql'
,
'mysqli'
)))
{
$this
->
pdo
->
exec
(
'SET NAMES '
.
$this
->
pdo
->
quote
(
$this
->
charset
));
$this
->
pdo
->
exec
(
'SET NAMES '
.
$this
->
pdo
->
quote
(
$this
->
charset
));
}
}
$this
->
trigger
(
'afterOpen'
);
$this
->
trigger
(
self
::
EVENT_AFTER_OPEN
);
}
}
/**
/**
...
...
framework/logging/Logger.php
View file @
373e6a70
...
@@ -9,6 +9,8 @@
...
@@ -9,6 +9,8 @@
namespace
yii\logging
;
namespace
yii\logging
;
use
yii\base\Event
;
/**
/**
* Logger records logged messages in memory.
* Logger records logged messages in memory.
*
*
...
@@ -18,13 +20,16 @@ namespace yii\logging;
...
@@ -18,13 +20,16 @@ namespace yii\logging;
*
*
* Logger provides a set of events for further customization:
* Logger provides a set of events for further customization:
*
*
* - `flush`. Raised on logs flush.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
* @since 2.0
*/
*/
class
Logger
extends
\yii\base\Component
class
Logger
extends
\yii\base\Component
{
{
/**
* @event Event an event that is triggered when messages are being flushed from memory to targets
*/
const
EVENT_FLUSH
=
'flush'
;
const
LEVEL_ERROR
=
'error'
;
const
LEVEL_ERROR
=
'error'
;
const
LEVEL_WARNING
=
'warning'
;
const
LEVEL_WARNING
=
'warning'
;
const
LEVEL_INFO
=
'info'
;
const
LEVEL_INFO
=
'info'
;
...
@@ -105,8 +110,8 @@ class Logger extends \yii\base\Component
...
@@ -105,8 +110,8 @@ class Logger extends \yii\base\Component
/**
/**
* Marks the beginning of a code block for profiling.
* Marks the beginning of a code block for profiling.
* This has to be matched with a call to [[endProfile]] with the same category name.
* This has to be matched with a call to [[endProfile
()
]] with the same category name.
* The begin- and end- calls must also be properly nested.
For example,
* The begin- and end- calls must also be properly nested.
* @param string $token token for the code block
* @param string $token token for the code block
* @param string $category the category of this log message
* @param string $category the category of this log message
* @see endProfile
* @see endProfile
...
@@ -118,7 +123,7 @@ class Logger extends \yii\base\Component
...
@@ -118,7 +123,7 @@ class Logger extends \yii\base\Component
/**
/**
* Marks the end of a code block for profiling.
* Marks the end of a code block for profiling.
* This has to be matched with a previous call to [[beginProfile]] with the same category name.
* This has to be matched with a previous call to [[beginProfile
()
]] with the same category name.
* @param string $token token for the code block
* @param string $token token for the code block
* @param string $category the category of this log message
* @param string $category the category of this log message
* @see beginProfile
* @see beginProfile
...
@@ -153,14 +158,14 @@ class Logger extends \yii\base\Component
...
@@ -153,14 +158,14 @@ class Logger extends \yii\base\Component
}
}
}
}
$this
->
messages
[]
=
array
(
$message
,
$level
,
$category
,
$time
);
$this
->
messages
[]
=
array
(
$message
,
$level
,
$category
,
$time
);
if
(
count
(
$this
->
messages
)
>=
$this
->
flushInterval
&&
$this
->
flushInterval
>
0
)
{
if
(
$this
->
flushInterval
>
0
&&
count
(
$this
->
messages
)
>=
$this
->
flushInterval
)
{
$this
->
flush
();
$this
->
flush
();
}
}
}
}
/**
/**
*
Removes all recorded messages from the memory
.
*
Flushes log messages from memory to targets
.
* This method will
raise a `flush`
event.
* This method will
trigger a [[flush]]
event.
*/
*/
public
function
flush
()
public
function
flush
()
{
{
...
@@ -191,7 +196,7 @@ class Logger extends \yii\base\Component
...
@@ -191,7 +196,7 @@ class Logger extends \yii\base\Component
* You can use an asterisk at the end of a category to do a prefix match.
* You can use an asterisk at the end of a category to do a prefix match.
* For example, 'yii\db\*' will match categories starting with 'yii\db\',
* For example, 'yii\db\*' will match categories starting with 'yii\db\',
* such as 'yii\db\Connection'.
* such as 'yii\db\Connection'.
* @param array $excludeCategories list of categories that you
are interested in.
* @param array $excludeCategories list of categories that you
want to exclude
* @return array the profiling results. Each array element has the following structure:
* @return array the profiling results. Each array element has the following structure:
* `array($token, $category, $time)`.
* `array($token, $category, $time)`.
*/
*/
...
...
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