0 follower

Final Class Yiisoft\Definitions\DynamicReferencesArray

InheritanceYiisoft\Definitions\DynamicReferencesArray

Allows creating an array of dynamic references from key-reference pairs.

See also Yiisoft\Definitions\DynamicReference.

Public Methods

Hide inherited methods

Method Description Defined By
from() Create dynamic references array from name-reference pairs. Yiisoft\Definitions\DynamicReferencesArray

Method Details

Hide inherited methods

from() public static method

Create dynamic references array from name-reference pairs.

For example if we want to define a set of named dynamic references, usually it is done as:

// di-web.php

ContentNegotiator::class => [
    '__construct()' => [
        'contentFormatters' => [
            'text/html' => DynamicReference::to(HtmlDataResponseFormatter::class),
            'application/xml' => DynamicReference::to(XmlDataResponseFormatter::class),
            'application/json' => DynamicReference::to(JsonDataResponseFormatter::class),
        ],
    ],
],

That is not very convenient, so we can define formatters in a separate config and without explicitly using DynamicReference::to() for each formatter:

// params.php
return [
     'yiisoft/data-response' => [
         'contentFormatters' => [
             'text/html' => HtmlDataResponseFormatter::class,
             'application/xml' => XmlDataResponseFormatter::class,
             'application/json' => JsonDataResponseFormatter::class,
         ],
     ],
];

Then we can use it like the following:

// di-web.php

ContentNegotiator::class => [
    '__construct()' => [
        'contentFormatters' =>
DynamicReferencesArray::from($params['yiisoft/data-response']['contentFormatters']),
    ],
],
public static Yiisoft\Definitions\DynamicReference[] from ( array $definitions )
$definitions array

Name-reference pairs.

throws Yiisoft\Definitions\Exception\InvalidConfigException

                public static function from(array $definitions): array
{
    $references = [];
    foreach ($definitions as $key => $definition) {
        $references[$key] = DynamicReference::to($definition);
    }
    return $references;
}