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
86ae5bdf
Commit
86ae5bdf
authored
Jan 25, 2012
by
Qiang Xue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
..
parent
a92acf65
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
28 additions
and
66 deletions
+28
-66
YiiBase.php
framework/YiiBase.php
+5
-7
ApplicationComponent.php
framework/base/ApplicationComponent.php
+0
-15
Object.php
framework/base/Object.php
+14
-21
Connection.php
framework/db/dao/Connection.php
+5
-19
ComponentTest.php
tests/unit/framework/base/ComponentTest.php
+1
-1
ObjectTest.php
tests/unit/framework/base/ObjectTest.php
+3
-3
No files found.
framework/YiiBase.php
View file @
86ae5bdf
...
...
@@ -76,7 +76,7 @@ class YiiBase
/**
* @var array initial property values that will be applied to objects newly created via [[createObject]].
* The array keys are fully qualified namespaced class names, and the array values are the corresponding
* name-value pairs for initializing the created class instances. Make sure the class names do
not
have
* name-value pairs for initializing the created class instances. Make sure the class names do
NOT
have
* the leading backslashes. For example,
*
* ~~~
...
...
@@ -317,7 +317,7 @@ class YiiBase
*
* - create the object using the PHP `new` operator;
* - if [[objectConfig]] contains the configuration for the object class,
* i
nitialize the object properties with that configuration
;
* i
t will be merged with the configuration passed to this method
;
* - initialize the object properties using the configuration passed to this method;
* - call the `init` method of the object if it implements the [[yii\base\Initable]] interface.
*
...
...
@@ -374,13 +374,11 @@ class YiiBase
$c
=
get_class
(
$object
);
if
(
isset
(
\Yii
::
$objectConfig
[
$c
]))
{
$config
=
isset
(
$config
)
?
array_merge
(
\Yii
::
$objectConfig
[
$c
],
$config
)
:
\Yii
::
$objectConfig
[
$c
]
;
$config
=
array_merge
(
\Yii
::
$objectConfig
[
$c
],
$config
)
;
}
if
(
!
empty
(
$config
))
{
foreach
(
$config
as
$name
=>
$value
)
{
$object
->
$name
=
$value
;
}
foreach
(
$config
as
$name
=>
$value
)
{
$object
->
$name
=
$value
;
}
if
(
$object
instanceof
\yii\base\Initable
)
{
...
...
framework/base/ApplicationComponent.php
View file @
86ae5bdf
...
...
@@ -12,30 +12,15 @@ namespace yii\base;
/**
* ApplicationComponent is the base class for application component classes.
*
* Child classes mainly needs to implement the [[Initable::init|init]] method as required by
* the [[Initable]] interface.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
abstract
class
ApplicationComponent
extends
Component
implements
Initable
{
/**
* @var array the behaviors that should be attached to this component.
* The behaviors will be attached to the component when [[init]] is called.
* Please refer to [[Model::behaviors]] on how to specify the value of this property.
*/
public
$behaviors
=
array
();
/**
* Initializes the application component.
* This method is invoked after the component is created and its property values are
* initialized. The default implementation will call [[Component::attachBehaviors()]]
* to attach behaviors declared in [[behaviors]].
* If you override this method, make sure to call the parent implementation.
*/
public
function
init
()
{
$this
->
attachBehaviors
(
$this
->
behaviors
);
}
}
framework/base/Object.php
View file @
86ae5bdf
...
...
@@ -258,17 +258,17 @@ class Object
/**
* Creates a new instance of the calling class.
*
* Parameters passed to this method will be used as the parameters to the object
* The newly created object will be initialized with the specified configuration.
*
* Extra parameters passed to this method will be used as the parameters to the object
* constructor.
*
* This method does the following steps to create a object:
*
* - create the object using the PHP `new` operator;
* - if [[Yii::objectConfig]] contains the configuration for the object class,
* initialize the object properties with that configuration;
* - if the number of the given parameters is more than the number of the parameters
* listed in the object constructor and the last given parameter is an array,
* initialize the object properties using that array;
* it will be merged with the $config parameter;
* - initialize the object properties using the configuration passed to this method;
* - call the `init` method of the object if it implements the [[yii\base\Initable]] interface.
*
* For example,
...
...
@@ -287,30 +287,25 @@ class Object
* }
* }
*
* $model = Foo::newInstance(
1, 2, array('c' => 3)
);
* $model = Foo::newInstance(
array('c' => 3), 1, 2
);
* // which is equivalent to the following lines:
* $model = new Foo(1, 2);
* $model->c = 3;
* $model->init();
* ~~~
*
* @param array $config the object configuration (name-value pairs that will be used to initialize the object)
* @return Object the created object
* @throws Exception if the configuration is invalid.
*/
public
static
function
newInstance
()
public
static
function
newInstance
(
$config
=
array
()
)
{
$c
=
get_called_class
();
$class
=
'\\'
.
$c
;
if
((
$n
=
func_num_args
())
>
0
)
{
if
((
$n
=
func_num_args
()
-
1
)
>
0
)
{
$args
=
func_get_args
();
if
(
is_array
(
$args
[
$n
-
1
]))
{
$method
=
new
\ReflectionMethod
(
$class
,
'__construct'
);
if
(
$method
->
getNumberOfParameters
()
<
$n
)
{
// the last EXTRA parameter is a configuration array
$config
=
$args
[
--
$n
];
unset
(
$args
[
$n
]);
}
}
array_shift
(
$args
);
// remove $config
}
if
(
$n
===
0
)
{
...
...
@@ -327,13 +322,11 @@ class Object
}
if
(
isset
(
\Yii
::
$objectConfig
[
$c
]))
{
$config
=
isset
(
$config
)
?
array_merge
(
\Yii
::
$objectConfig
[
$c
],
$config
)
:
\Yii
::
$objectConfig
[
$c
]
;
$config
=
array_merge
(
\Yii
::
$objectConfig
[
$c
],
$config
)
;
}
if
(
!
empty
(
$config
))
{
foreach
(
$config
as
$name
=>
$value
)
{
$object
->
$name
=
$value
;
}
foreach
(
$config
as
$name
=>
$value
)
{
$object
->
$name
=
$value
;
}
if
(
$object
instanceof
\yii\base\Initable
)
{
...
...
framework/db/dao/Connection.php
View file @
86ae5bdf
...
...
@@ -26,7 +26,11 @@ use yii\db\Exception;
* the DB connection:
*
* ~~~
* $connection = \yii\db\dao\Connection::newInstance($dsn, $username, $password);
* $connection = \yii\db\dao\Connection::newInstance(array(
* 'dsn' => $dsn,
* 'username' => $username,
* 'password' => $password,
* ));
* $connection->active = true; // same as: $connection->open();
* ~~~
*
...
...
@@ -255,24 +259,6 @@ class Connection extends \yii\base\ApplicationComponent
private
$_driver
;
/**
* Constructor.
* Note, the DB connection is not established when this connection
* instance is created. You may set [[active]] to be true or call [[open]]
* to establish the connection.
* @param string $dsn the Data Source Name, or DSN, contains the information
* required to connect to the database.
* @param string $username the user name for the DSN string.
* @param string $password the password for the DSN string.
* @see http://www.php.net/manual/en/function.PDO-construct.php
*/
public
function
__construct
(
$dsn
=
''
,
$username
=
''
,
$password
=
''
)
{
$this
->
dsn
=
$dsn
;
$this
->
username
=
$username
;
$this
->
password
=
$password
;
}
/**
* Closes the connection when this component is being serialized.
* @return array
*/
...
...
tests/unit/framework/base/ComponentTest.php
View file @
86ae5bdf
...
...
@@ -206,7 +206,7 @@ class ComponentTest extends \yiiunit\TestCase
public
function
testCreate
()
{
$component
=
NewComponent2
::
newInstance
(
1
,
2
,
array
(
'a'
=>
3
)
);
$component
=
NewComponent2
::
newInstance
(
array
(
'a'
=>
3
),
1
,
2
);
$this
->
assertEquals
(
1
,
$component
->
b
);
$this
->
assertEquals
(
2
,
$component
->
c
);
$this
->
assertEquals
(
3
,
$component
->
a
);
...
...
tests/unit/framework/base/ObjectTest.php
View file @
86ae5bdf
...
...
@@ -51,15 +51,15 @@ class ObjectTest extends \yiiunit\TestCase
$this
->
assertEquals
(
'test'
,
$foo
->
prop
[
'test'
]);
$bar
=
Bar
::
newInstance
(
10
,
20
);
$bar
=
Bar
::
newInstance
(
array
(),
10
,
20
);
$this
->
assertEquals
(
30
,
$bar
->
prop1
);
$this
->
assertEquals
(
null
,
$bar
->
prop2
);
$this
->
assertEquals
(
3
,
$bar
->
prop3
);
$bar
=
Bar
::
newInstance
(
100
,
200
,
array
(
$bar
=
Bar
::
newInstance
(
array
(
'prop2'
=>
'x'
,
'prop3'
=>
400
,
));
)
,
100
,
200
);
$this
->
assertEquals
(
300
,
$bar
->
prop1
);
$this
->
assertEquals
(
'x'
,
$bar
->
prop2
);
$this
->
assertEquals
(
3
,
$bar
->
prop3
);
...
...
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