PHP Class yii\di\Instance

You may use Instance::get to obtain the actual object referenced by [[id]]. Instance is mainly used in two places: - When configuring a dependency injection container, you use Instance to reference a class name, interface name or alias name. The reference can later be resolved into the actual object by the container. - In classes which use service locator to obtain dependent objects. The following example shows how to configure a DI container with Instance: php $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', ]); And the following example shows how a class retrieves a component from a service locator: php class DbCache extends Cache { public $db = 'db'; public function init() { parent::init(); $this->db = Instance::ensure($this->db, 'yii\db\Connection'); } }
Since: 2.0
Author: Qiang Xue ([email protected])
Show file Open project: yiisoft/yii2 Class Usage Examples

Public Properties

Property Type Description
$id the component ID, class name, interface name or alias name

Public Methods

Method Description
ensure ( object | string | array | static $reference, string $type = null, ServiceLocator | Container $container = null ) : object Resolves the specified reference into the actual object and makes sure it is of the specified type.
get ( ServiceLocator | Container $container = null ) : object Returns the actual object referenced by this Instance object.
of ( string $id ) : Instance Creates a new Instance object.

Protected Methods

Method Description
__construct ( string $id ) Constructor.

Method Details

__construct() protected method

Constructor.
protected __construct ( string $id )
$id string the component ID

ensure() public static method

The reference may be specified as a string or an Instance object. If the former, it will be treated as a component ID, a class/interface name or an alias, depending on the container type. If you do not specify a container, the method will first try Yii::$app followed by Yii::$container. For example, php use yii\db\Connection; returns Yii::$app->db $db = Instance::ensure('db', Connection::className()); returns an instance of Connection using the given configuration $db = Instance::ensure(['dsn' => 'sqlite:path/to/my.db'], Connection::className());
public static ensure ( object | string | array | static $reference, string $type = null, ServiceLocator | Container $container = null ) : object
$reference object | string | array | static 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`.
$type string the class/interface name to be checked. If null, type check will not be performed.
$container ServiceLocator | 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.

get() public method

Returns the actual object referenced by this Instance object.
public get ( ServiceLocator | Container $container = null ) : object
$container ServiceLocator | Container the container used to locate the referenced object. If null, the method will first try `Yii::$app` then `Yii::$container`.
return object the actual object referenced by this Instance object.

of() public static method

Creates a new Instance object.
public static of ( string $id ) : Instance
$id string the component ID
return Instance the new Instance object.

Property Details

$id public property

the component ID, class name, interface name or alias name
public $id