mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-26 06:15:19 +08:00
Fixes #6398: Added support for specifying dependent component in terms of a configuration array for classes such as DbCache
This commit is contained in:
@ -36,9 +36,10 @@ use yii\di\Instance;
|
||||
class Cache extends \yii\caching\Cache
|
||||
{
|
||||
/**
|
||||
* @var Connection|string the MongoDB connection object or the application component ID of the MongoDB connection.
|
||||
* @var Connection|array|string the MongoDB connection object or the application component ID of the MongoDB connection.
|
||||
* After the Cache object is created, if you want to change this property, you should only assign it
|
||||
* with a MongoDB connection object.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $db = 'mongodb';
|
||||
/**
|
||||
|
@ -34,8 +34,9 @@ use yii\helpers\Json;
|
||||
abstract class Migration extends Component implements MigrationInterface
|
||||
{
|
||||
/**
|
||||
* @var Connection|string the MongoDB connection object or the application component ID of the MongoDB connection
|
||||
* @var Connection|array|string the MongoDB connection object or the application component ID of the MongoDB connection
|
||||
* that this migration should work with.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $db = 'mongodb';
|
||||
|
||||
@ -217,4 +218,4 @@ abstract class Migration extends Component implements MigrationInterface
|
||||
return $collection;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -38,9 +38,10 @@ use yii\di\Instance;
|
||||
class Session extends \yii\web\Session
|
||||
{
|
||||
/**
|
||||
* @var Connection|string the MongoDB connection object or the application component ID of the MongoDB connection.
|
||||
* @var Connection|array|string the MongoDB connection object or the application component ID of the MongoDB connection.
|
||||
* After the Session object is created, if you want to change this property, you should only assign it
|
||||
* with a MongoDB connection object.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $db = 'mongodb';
|
||||
/**
|
||||
|
@ -13,6 +13,7 @@ Yii Framework 2 Change Log
|
||||
- Bug #6717: Fixed issue with UrlManager not matching a route on url creation when it was prefixed with `/` and pattern was empty (cebe)
|
||||
- Enh #4502: Added alias support to URL route when calling `Url::toRoute()` and `Url::to()` (qiangxue, lynicidn)
|
||||
- Enh #6247: Logger and error handler are now using slightly less memory (stepanselyuk, samdark)
|
||||
- Enh #6398: Added support for specifying dependent component in terms of a configuration array for classes such as `DbCache` (qiangxue)
|
||||
- Enh #6434: Added `yii\behaviors\SluggableBehavior::immutable` to support keeping the generated slug unchanged (trntv)
|
||||
- Enh #6467: `ActiveForm` will scroll to the nearest visible element when the first error input is hidden (newartix)
|
||||
- Enh #6488: Support changing `yii\base\Theme::basePath` during runtime (qiangxue)
|
||||
|
@ -37,9 +37,10 @@ use yii\di\Instance;
|
||||
class DbCache extends Cache
|
||||
{
|
||||
/**
|
||||
* @var Connection|string the DB connection object or the application component ID of the DB connection.
|
||||
* @var Connection|array|string the DB connection object or the application component ID of the DB connection.
|
||||
* After the DbCache object is created, if you want to change this property, you should only assign it
|
||||
* with a DB connection object.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $db = 'db';
|
||||
/**
|
||||
|
@ -72,8 +72,9 @@ class ActiveDataProvider extends BaseDataProvider
|
||||
*/
|
||||
public $key;
|
||||
/**
|
||||
* @var Connection|string the DB connection object or the application component ID of the DB connection.
|
||||
* @var Connection|array|string the DB connection object or the application component ID of the DB connection.
|
||||
* If not set, the default DB connection will be used.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $db;
|
||||
|
||||
|
@ -64,7 +64,8 @@ use yii\di\Instance;
|
||||
class SqlDataProvider extends BaseDataProvider
|
||||
{
|
||||
/**
|
||||
* @var Connection|string the DB connection object or the application component ID of the DB connection.
|
||||
* @var Connection|array|string the DB connection object or the application component ID of the DB connection.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $db = 'db';
|
||||
/**
|
||||
|
@ -39,10 +39,13 @@ use \yii\base\Component;
|
||||
class Migration extends Component implements MigrationInterface
|
||||
{
|
||||
/**
|
||||
* @var Connection|string the DB connection object or the application component ID of the DB connection
|
||||
* that this migration should work with. Note that when a Migration object is created by
|
||||
* the `migrate` command, this property will be overwritten by the command. If you do not want to
|
||||
* use the DB connection provided by the command, you may override the [[init()]] method like the following:
|
||||
* @var Connection|array|string the DB connection object or the application component ID of the DB connection
|
||||
* that this migration should work with. Starting from version 2.0.2, this can also be a configuration array
|
||||
* for creating the object.
|
||||
*
|
||||
* Note that when a Migration object is created by the `migrate` command, this property will be overwritten
|
||||
* by the command. If you do not want to use the DB connection provided by the command, you may override
|
||||
* the [[init()]] method like the following:
|
||||
*
|
||||
* ```php
|
||||
* public function init()
|
||||
|
@ -92,13 +92,14 @@ class Instance
|
||||
*
|
||||
* // returns Yii::$app->db
|
||||
* $db = Instance::ensure('db', Connection::className());
|
||||
* // or
|
||||
* $instance = Instance::of('db');
|
||||
* $db = Instance::ensure($instance, Connection::className());
|
||||
* // returns an instance of Connection using the given configuration
|
||||
* $db = Instance::ensure(['dsn' => 'sqlite:path/to/my.db'], Connection::className());
|
||||
* ```
|
||||
*
|
||||
* @param object|string|static $reference an object or a reference to the desired object.
|
||||
* @param object|string|array|static $reference an object or a reference to the desired object.
|
||||
* You may specify a reference in terms of a component ID or an Instance object.
|
||||
* Starting from version 2.0.2, you may also pass in a configuration array for creating the object.
|
||||
* If the "class" value is not specified in the configuration array, it will use the value of `$type`.
|
||||
* @param string $type the class/interface name to be checked. If null, type check will not be performed.
|
||||
* @param ServiceLocator|Container $container the container. This will be passed to [[get()]].
|
||||
* @return object the object referenced by the Instance, or `$reference` itself if it is an object.
|
||||
@ -108,6 +109,13 @@ class Instance
|
||||
{
|
||||
if ($reference instanceof $type) {
|
||||
return $reference;
|
||||
} elseif (is_array($reference)) {
|
||||
$class = isset($reference['class']) ? $reference['class'] : $type;
|
||||
if (!$container instanceof Container) {
|
||||
$container = Yii::$app;
|
||||
}
|
||||
unset($reference['class']);
|
||||
return $container->get($class, [], $reference);
|
||||
} elseif (empty($reference)) {
|
||||
throw new InvalidConfigException('The required component is not specified.');
|
||||
}
|
||||
|
@ -57,7 +57,8 @@ use yii\web\ForbiddenHttpException;
|
||||
class AccessControl extends ActionFilter
|
||||
{
|
||||
/**
|
||||
* @var User|string the user object representing the authentication status or the ID of the user application component.
|
||||
* @var User|array|string the user object representing the authentication status or the ID of the user application component.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $user = 'user';
|
||||
/**
|
||||
|
@ -53,17 +53,19 @@ class DbMessageSource extends MessageSource
|
||||
const CACHE_KEY_PREFIX = 'DbMessageSource';
|
||||
|
||||
/**
|
||||
* @var Connection|string the DB connection object or the application component ID of the DB connection.
|
||||
* @var Connection|array|string the DB connection object or the application component ID of the DB connection.
|
||||
* After the DbMessageSource object is created, if you want to change this property, you should only assign
|
||||
* it with a DB connection object.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $db = 'db';
|
||||
/**
|
||||
* @var Cache|string the cache object or the application component ID of the cache object.
|
||||
* @var Cache|array|string the cache object or the application component ID of the cache object.
|
||||
* The messages data will be cached using this cache object. Note, this property has meaning only
|
||||
* in case [[cachingDuration]] set to non-zero value.
|
||||
* After the DbMessageSource object is created, if you want to change this property, you should only assign
|
||||
* it with a cache object.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $cache = 'cache';
|
||||
/**
|
||||
|
@ -32,9 +32,10 @@ use yii\helpers\VarDumper;
|
||||
class DbTarget extends Target
|
||||
{
|
||||
/**
|
||||
* @var Connection|string the DB connection object or the application component ID of the DB connection.
|
||||
* @var Connection|array|string the DB connection object or the application component ID of the DB connection.
|
||||
* After the DbTarget object is created, if you want to change this property, you should only assign it
|
||||
* with a DB connection object.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $db = 'db';
|
||||
/**
|
||||
|
@ -50,9 +50,10 @@ class EmailTarget extends Target
|
||||
*/
|
||||
public $message = [];
|
||||
/**
|
||||
* @var MailerInterface|string the mailer object or the application component ID of the mailer object.
|
||||
* @var MailerInterface|array|string the mailer object or the application component ID of the mailer object.
|
||||
* After the EmailTarget object is created, if you want to change this property, you should only assign it
|
||||
* with a mailer object.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $mailer = 'mailer';
|
||||
|
||||
|
@ -23,9 +23,10 @@ use yii\di\Instance;
|
||||
abstract class DbMutex extends Mutex
|
||||
{
|
||||
/**
|
||||
* @var Connection|string the DB connection object or the application component ID of the DB connection.
|
||||
* @var Connection|array|string the DB connection object or the application component ID of the DB connection.
|
||||
* After the Mutex object is created, if you want to change this property, you should only assign
|
||||
* it with a DB connection object.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $db = 'db';
|
||||
|
||||
|
@ -36,9 +36,10 @@ use yii\di\Instance;
|
||||
class DbManager extends BaseManager
|
||||
{
|
||||
/**
|
||||
* @var Connection|string the DB connection object or the application component ID of the DB connection.
|
||||
* @var Connection|array|string the DB connection object or the application component ID of the DB connection.
|
||||
* After the DbManager object is created, if you want to change this property, you should only assign it
|
||||
* with a DB connection object.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $db = 'db';
|
||||
/**
|
||||
|
@ -23,9 +23,10 @@ use yii\base\Object;
|
||||
abstract class DbFixture extends Fixture
|
||||
{
|
||||
/**
|
||||
* @var Connection|string the DB connection object or the application component ID of the DB connection.
|
||||
* @var Connection|array|string the DB connection object or the application component ID of the DB connection.
|
||||
* After the DbFixture object is created, if you want to change this property, you should only assign it
|
||||
* with a DB connection object.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $db = 'db';
|
||||
|
||||
|
@ -39,11 +39,13 @@ use yii\di\Instance;
|
||||
class CacheSession extends Session
|
||||
{
|
||||
/**
|
||||
* @var Cache|string the cache object or the application component ID of the cache object.
|
||||
* @var Cache|array|string the cache object or the application component ID of the cache object.
|
||||
* The session data will be stored using this cache object.
|
||||
*
|
||||
* After the CacheSession object is created, if you want to change this property,
|
||||
* you should only assign it with a cache object.
|
||||
*
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $cache = 'cache';
|
||||
|
||||
|
@ -38,9 +38,10 @@ use yii\di\Instance;
|
||||
class DbSession extends Session
|
||||
{
|
||||
/**
|
||||
* @var Connection|string the DB connection object or the application component ID of the DB connection.
|
||||
* @var Connection|array|string the DB connection object or the application component ID of the DB connection.
|
||||
* After the DbSession object is created, if you want to change this property, you should only assign it
|
||||
* with a DB connection object.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $db = 'db';
|
||||
/**
|
||||
|
@ -24,9 +24,10 @@ use yii\di\Instance;
|
||||
class FragmentCache extends Widget
|
||||
{
|
||||
/**
|
||||
* @var Cache|string the cache object or the application component ID of the cache object.
|
||||
* @var Cache|array|string the cache object or the application component ID of the cache object.
|
||||
* After the FragmentCache object is created, if you want to change this property,
|
||||
* you should only assign it with a cache object.
|
||||
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
|
||||
*/
|
||||
public $cache = 'cache';
|
||||
/**
|
||||
|
@ -8,6 +8,7 @@
|
||||
namespace yiiunit\framework\di;
|
||||
|
||||
use yii\base\Component;
|
||||
use yii\db\Connection;
|
||||
use yii\di\Container;
|
||||
use yii\di\Instance;
|
||||
use yiiunit\TestCase;
|
||||
@ -29,4 +30,20 @@ class InstanceTest extends TestCase
|
||||
$this->assertTrue(Instance::ensure($instance, $className, $container) instanceof Component);
|
||||
$this->assertTrue($instance->get($container) !== Instance::ensure($instance, $className, $container));
|
||||
}
|
||||
|
||||
public function testEnsure()
|
||||
{
|
||||
$container = new Container;
|
||||
$container->set('db', [
|
||||
'class' => 'yii\db\Connection',
|
||||
'dsn' => 'test',
|
||||
]);
|
||||
|
||||
$this->assertTrue(Instance::ensure('db', 'yii\db\Connection', $container) instanceof Connection);
|
||||
$this->assertTrue(Instance::ensure(new Connection, 'yii\db\Connection', $container) instanceof Connection);
|
||||
$this->assertTrue(Instance::ensure([
|
||||
'class' => 'yii\db\Connection',
|
||||
'dsn' => 'test',
|
||||
], 'yii\db\Connection', $container) instanceof Connection);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user