Skip to content
PHP Ecosystem
Explore

Instance

API reference › yii › di › Instance

classyii\di\Instance
Since2.0
Sourceframework/di/Instance.php

Instance represents a reference to a named object in a dependency injection (DI) container or a service locator.

You may use 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:

$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:

class DbCache extends Cache
{
public $db = 'db';
public function init()
{
parent::init();
$this->db = Instance::ensure($this->db, 'yii\db\Connection');
}
}
PropertyTypeDescriptionDefined by
$idstringThe component ID, class name, interface name or alias name Default: null.Instance
$optionalboolIf null should be returned instead of throwing an exception Default: null.Instance
MethodDescriptionDefined by
__construct() protectedConstructor.Instance
__set_state() staticRestores class state after using var_export().Instance
ensure() staticResolves the specified reference into the actual object and makes sure it is of the specified type.Instance
get()Returns the actual object referenced by this Instance object.Instance
of() staticCreates a new Instance object.Instance
protected function __construct(string $id, bool $optional = false)

Constructor.

Parameters

ParameterTypeDescription
$idstringThe component ID
$optionalboolIf null should be returned instead of throwing an exception
public static function __set_state(array $state): yii\di\Instance

Restores class state after using var_export().

Parameters

ParameterTypeDescription
$statearray

Returns

Instance

Throws

Since

2.0.12

See also

public static function ensure(object|string|array|static $reference, class-string<yii\di\T>|null $type = null, yii\di\ServiceLocator|yii\di\Container|null $container = null): ($type is null ? object : yii\di\T)

Resolves the specified reference into the actual object and makes sure it is of the specified type.

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,

use yii\db\Connection;
// returns Yii::$app->db
$db = Instance::ensure('db', Connection::class);
// returns an instance of Connection using the given configuration
$db = Instance::ensure(['dsn' => 'sqlite:path/to/my.db'], Connection::class);

Parameters

ParameterTypeDescription
$referenceobject|string|array|staticAn 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.
$typeclass-string<yii\di\T>|nullThe class/interface name to be checked. If null, type check will not be performed.
$containerServiceLocator|Container|nullThe container. This will be passed to get().

Returns

($type is null ? object : yii\di\T): The object referenced by the Instance, or $reference itself if it is an object.

Throws

public function get(yii\di\ServiceLocator|yii\di\Container|null $container = null): object|null

Returns the actual object referenced by this Instance object.

Parameters

ParameterTypeDescription
$containerServiceLocator|Container|nullThe container used to locate the referenced object. If null, the method will first try Yii::$app then Yii::$container.

Returns

object|null: The actual object referenced by this Instance object.

public static function of(string $id, bool $optional = false): yii\di\Instance

Creates a new Instance object.

Parameters

ParameterTypeDescription
$idstringThe component ID
$optionalboolIf null should be returned instead of throwing an exception

Returns

Instance: The new Instance object.