Class yii\di\Instance
继承 | yii\di\Instance |
---|---|
可用版本自 | 2.0 |
源码 | https://github.com/yiichina/yii2/blob/api/framework/di/Instance.php |
Instance 表示对依赖注入(DI)容器或服务定位器的命名对象的引用。
实例主要用于两个地方:
- 配置依赖注入容器时,你使用实例引用类名,接口名或别名。 接口名或别名。稍后可以通过容器将引用解析为实际对象。
- 在使用服务定位器来获取依赖对象的类中。
下面的示例演示了如何通过实例配置 DI 容器:
$container = new \yii\di\Container;
$container->set('cache', [
'class' => 'yii\caching\DbCache',
'db' => Instance::of('db')
]);
$container->set('db', [
'class' => 'yii\db\Connection',
'dsn' => 'sqlite:path/to/file.db',
]);
下面的示例显示了类如何从服务定位器检索组件:
class DbCache extends Cache
{
public $db = 'db';
public function init()
{
parent::init();
$this->db = Instance::ensure($this->db, 'yii\db\Connection');
}
}
公共方法
方法 | 描述 | 被定义在 |
---|---|---|
__set_state() | 使用 var_export() 之后恢复类的状态。 |
yii\di\Instance |
ensure() | 将指定的引用解析为实际对象,并确保它具有指定的类型。 | yii\di\Instance |
get() | 返回实例对象引用的实际对象。 | yii\di\Instance |
of() | 创建一个新的实例对象。 | yii\di\Instance |
属性详情
方法详情
Constructor.
protected void __construct($id) | ||
$id | string | 组件 ID |
使用 var_export()
之后恢复类的状态。
参见 \yii\di\var_export().
public static yii\di\Instance __set_state($state) | ||
$state | array | |
throws | yii\base\InvalidConfigException | 当 $state 属性不包含 |
---|
将指定的引用解析为实际对象,并确保它具有指定的类型。
可以将引用指定为字符串或实例对象。 如果是前者,它将会被视为组件 ID,类/接口名或别名,这将根据容器类型决定。
如果你没有指定容器,该方法首先将会尝试 Yii::$app
然后是 Yii::$container
。
例如,
use yii\db\Connection;
// 返回 Yii::$app->db
$db = Instance::ensure('db', Connection::className());
// 使用给定配置返回 Connection 实例
$db = Instance::ensure(['dsn' => 'sqlite:path/to/my.db'], Connection::className());
public static object ensure($reference, $type = null, $container = null) | ||
$reference | object|string|array|static | 对象或对所需对象的引用。
你可以根据组件 ID 或实例对象指定引用。
从 2.0.2 版本开始,你可以通过配置数组去创建一个对象。
如果在配置数组中没有指定 "class" 的值,将会使用 |
$type | string | 要检查的类/借口名称。如果为空,类型检查将不会被执行。 |
$container | yii\di\ServiceLocator|yii\di\Container | 容器。将传递给 get()。 |
return | object | 实例引用的对象,如果为一个对象,则表示 |
---|---|---|
throws | yii\base\InvalidConfigException | 如果引用无效抛出的异常 |
返回实例对象引用的实际对象。
public object get($container = null) | ||
$container | yii\di\ServiceLocator|yii\di\Container | 用于定位引用对象的容器。
如果为空,该方法首先将尝试 |
return | object | 实例对象引用的实际对象。 |
---|
创建一个新的实例对象。
public static yii\di\Instance of($id) | ||
$id | string | 组件 ID |
return | yii\di\Instance | 新的实例对象。 |
---|