mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-11-04 14:46:19 +08:00 
			
		
		
		
	update
update translate
This commit is contained in:
		@ -14,7 +14,7 @@ Yii обеспечивает функционал контейнера внед
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
* Внедрение зависимости через конструктор.
 | 
					* Внедрение зависимости через конструктор.
 | 
				
			||||||
* Внедрение зависимости через сеттер и свойство.
 | 
					* Внедрение зависимости через сеттер и свойство.
 | 
				
			||||||
* Внедрение зависимости через callback.
 | 
					* Внедрение зависимости через PHP callback.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Внедрение зависимости через конструктор <a name="constructor-injection"></a>
 | 
					### Внедрение зависимости через конструктор <a name="constructor-injection"></a>
 | 
				
			||||||
@ -41,9 +41,9 @@ $foo = new Foo($bar);
 | 
				
			|||||||
### Внедрение зависимости через сеттер и свойство <a name="setter-and-property-injection"></a>
 | 
					### Внедрение зависимости через сеттер и свойство <a name="setter-and-property-injection"></a>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Внедрение зависимости через сеттер и свойство поддерживается через [конфигурации](concept-configurations.md).
 | 
					Внедрение зависимости через сеттер и свойство поддерживается через [конфигурации](concept-configurations.md).
 | 
				
			||||||
When registering a dependency or when creating a new object, you can provide a configuration which
 | 
					При регистрации зависимости или при создании нового объекта, вы можете предоставить конфигурацию, которая
 | 
				
			||||||
will be used by the container to inject the dependencies through the corresponding setters or properties.
 | 
					будет использована контейнером для внедрения зависимостей через соответствующие сеттеры или свойства.
 | 
				
			||||||
For example,
 | 
					Например,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```php
 | 
					```php
 | 
				
			||||||
use yii\base\Object;
 | 
					use yii\base\Object;
 | 
				
			||||||
@ -72,11 +72,10 @@ $container->get('Foo', [], [
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### PHP Callable Injection <a name="php-callable-injection"></a>
 | 
					### Внедрение зависимости через PHP callback <a name="php-callable-injection"></a>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
In this case, the container will use a registered PHP callable to build new instances of a class.
 | 
					В данном случае, контейнер будет использовать зарегистрированный PHP callback для создания новых экземпляров класса.
 | 
				
			||||||
The callable is responsible to resolve the dependencies and inject them appropriately to the newly
 | 
					Callback отвечает за разрешения зависимостей и внедряет их в соответствии с вновь создаваемыми объектами. Например,
 | 
				
			||||||
created objects. For example,
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
```php
 | 
					```php
 | 
				
			||||||
$container->set('Foo', function () {
 | 
					$container->set('Foo', function () {
 | 
				
			||||||
@ -87,30 +86,29 @@ $foo = $container->get('Foo');
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Registering Dependencies <a name="registering-dependencies"></a>
 | 
					Регистрация зависимостей <a name="registering-dependencies"></a>
 | 
				
			||||||
------------------------
 | 
					------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can use [[yii\di\Container::set()]] to register dependencies. The registration requires a dependency name
 | 
					Вы можете использовать [[yii\di\Container::set()]] для регистрации зависимостей. При регистрации требуется имя зависимости, а так же определение зависимости. 
 | 
				
			||||||
as well as a dependency definition. A dependency name can be a class name, an interface name, or an alias name;
 | 
					Именем звисимости может быть имя класса, интерфейса или алиас, так же определением зависимости может быть имя класса, конфигурационным массивом, или PHP calback'ом.
 | 
				
			||||||
and a dependency definition can be a class name, a configuration array, or a PHP callable.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
```php
 | 
					```php
 | 
				
			||||||
$container = new \yii\di\Container;
 | 
					$container = new \yii\di\Container;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// register a class name as is. This can be skipped.
 | 
					// регистрация имени класса, как есть. это может быть пропущено.
 | 
				
			||||||
$container->set('yii\db\Connection');
 | 
					$container->set('yii\db\Connection');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// register an interface
 | 
					// регистраци интерфейса
 | 
				
			||||||
// When a class depends on the interface, the corresponding class
 | 
					// Когда класс зависит от интерфейса, соответствующий класс
 | 
				
			||||||
// will be instantiated as the dependent object
 | 
					// будет использован в качестве зависимости объекта
 | 
				
			||||||
$container->set('yii\mail\MailInterface', 'yii\swiftmailer\Mailer');
 | 
					$container->set('yii\mail\MailInterface', 'yii\swiftmailer\Mailer');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// register an alias name. You can use $container->get('foo')
 | 
					// регистрация алиаса. Вы можете использовать $container->get('foo')
 | 
				
			||||||
// to create an instance of Connection
 | 
					// для создания экземпляра Connection
 | 
				
			||||||
$container->set('foo', 'yii\db\Connection');
 | 
					$container->set('foo', 'yii\db\Connection');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// register a class with configuration. The configuration
 | 
					// Регистрация класса с конфигурацией. Конфигурация
 | 
				
			||||||
// will be applied when the class is instantiated by get()
 | 
					// будет применена при создании экземпляра класса через get()
 | 
				
			||||||
$container->set('yii\db\Connection', [
 | 
					$container->set('yii\db\Connection', [
 | 
				
			||||||
    'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
 | 
					    'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
 | 
				
			||||||
    'username' => 'root',
 | 
					    'username' => 'root',
 | 
				
			||||||
@ -118,8 +116,8 @@ $container->set('yii\db\Connection', [
 | 
				
			|||||||
    'charset' => 'utf8',
 | 
					    'charset' => 'utf8',
 | 
				
			||||||
]);
 | 
					]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// register an alias name with class configuration
 | 
					// регистрация алиаса с конфигурацией класса
 | 
				
			||||||
// In this case, a "class" element is required to specify the class
 | 
					// В данном случае, параметр "class" требуется для указания класса
 | 
				
			||||||
$container->set('db', [
 | 
					$container->set('db', [
 | 
				
			||||||
    'class' => 'yii\db\Connection',
 | 
					    'class' => 'yii\db\Connection',
 | 
				
			||||||
    'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
 | 
					    'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
 | 
				
			||||||
@ -128,19 +126,18 @@ $container->set('db', [
 | 
				
			|||||||
    'charset' => 'utf8',
 | 
					    'charset' => 'utf8',
 | 
				
			||||||
]);
 | 
					]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// register a PHP callable
 | 
					// регистрация PHP callback'a
 | 
				
			||||||
// The callable will be executed each time when $container->get('db') is called
 | 
					// Callback будет выполняться каждый раз при вызове $container->get('db')
 | 
				
			||||||
$container->set('db', function ($container, $params, $config) {
 | 
					$container->set('db', function ($container, $params, $config) {
 | 
				
			||||||
    return new \yii\db\Connection($config);
 | 
					    return new \yii\db\Connection($config);
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// register a component instance
 | 
					// регистрация экземпляра компонента
 | 
				
			||||||
// $container->get('pageCache') will return the same instance each time it is called
 | 
					// $container->get('pageCache') вернёт тот же экземпляр при каждом вызове
 | 
				
			||||||
$container->set('pageCache', new FileCache);
 | 
					$container->set('pageCache', new FileCache);
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> Tip: If a dependency name is the same as the corresponding dependency definition, you do not
 | 
					> Подсказка: Если имя зависимости такое же, как и определение соответствующей зависимости, то вы не нуждаетесь в её повторной регистрации в контейнер внедрения зависимостей.
 | 
				
			||||||
  need to register it with the DI container.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
A dependency registered via `set()` will generate an instance each time the dependency is needed.
 | 
					A dependency registered via `set()` will generate an instance each time the dependency is needed.
 | 
				
			||||||
You can use [[yii\di\Container::setSingleton()]] to register a dependency that only generates
 | 
					You can use [[yii\di\Container::setSingleton()]] to register a dependency that only generates
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user