From e6aad90840710c67d99918631bb4f5d74ea7f790 Mon Sep 17 00:00:00 2001 From: Alexander Makarov Date: Sun, 14 Sep 2014 13:30:40 +0400 Subject: [PATCH] Edited Russian translation of Service Locator guide --- docs/guide-ru/concept-service-locator.md | 57 ++++++++++++++------------------ 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/docs/guide-ru/concept-service-locator.md b/docs/guide-ru/concept-service-locator.md index e251ef1..ca08339 100644 --- a/docs/guide-ru/concept-service-locator.md +++ b/docs/guide-ru/concept-service-locator.md @@ -1,22 +1,20 @@ Service Locator -=============== +============= -Service Locator является объектом, который знает, как обеспечить всевозможные службы (или компоненты), которые могут понадобиться в приложении. -В пределах Service Locator'а, каждый компонент имеет только один экземпляр, который уникально определяется с помощью идентификатора (ID). -Уникальный идентификатор (ID) может быть использован для извлечения компонента из Service Locator'а. +Service Locator является объектом, предоставляющим всевозможные сервисы (или компоненты), которые могут понадобиться +приложению. В Service Locator, каждый компонент представлен единственным экземпляром, имеющим уникальный ID. +Уникальный идентификатор (ID) может быть использован для получения компонента из Service Locator. В Yii Service Locator является экземпляром класса [[yii\di\ServiceLocator]] или его дочернего класса. -Наиболее часто используемый Service Locator в Yii - это объект *приложения*, который можно получить через -`\Yii::$app`. Обеспечиваемые им службы называют *компонентами приложения*, такие, как компоненты `запрос`, `ответ`, `UrlManager`. -Вы легко можете настроить эти компоненты или даже заменить их собственными реализациями, -благодаря функциональным службам, предоставляемым Service Locator'ом. +Наиболее часто используемый Service Locator в Yii — это объект *приложения*, который можно получить через `\Yii::$app`. +Предоставляемые им службы, такие, как компоненты `request`, `response`, `urlManager`, называют *компонентами приложения*. +Благодаря Service Locator вы легко можете настроить эти компоненты или даже заменить их собственными реализациями. -Помимо объекта приложения, объект каждого модуля так же является Service Locator'ом. +Помимо объекта приложения, объект каждого модуля также является Service Locator. -Для использования Service Locator'а первым шагом является регистрация компонентов. -Компонент может быть зарегистрирован с помощью [[yii\di\ServiceLocator::set()]]. -Следующий код демонстрирует различные способы регистрации компонентов: +При использовании Service Locator первым шагом является регистрация компонентов. Компонент может быть зарегистрирован +с помощью метода [[yii\di\ServiceLocator::set()]]. Следующий код демонстрирует различные способы регистрации компонентов: ```php use yii\di\ServiceLocator; @@ -24,10 +22,10 @@ use yii\caching\FileCache; $locator = new ServiceLocator; -// Зарегистрирует "cache", используя имя класса, которое может быть использовано для создания компонента. +// регистрирует "cache", используя имя класса, которое может быть использовано для создания компонента. $locator->set('cache', 'yii\caching\ApcCache'); -// Зарегистрирует "db", используя конфигурационный массив, который может быть использован для создания компонента. +// регистрирует "db", используя конфигурационный массив, который может быть использован для создания компонента. $locator->set('db', [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=demo', @@ -35,41 +33,36 @@ $locator->set('db', [ 'password' => '', ]); -// Зарегистрирует "search", используя анонимную функцию, которая создаёт компонент +// регистрирует "search", используя анонимную функцию, которая создаёт компонент $locator->set('search', function () { return new app\components\SolrService; }); -// Зарегистрирует "pageCache", используя компонент +// регистрирует "pageCache", используя компонент $locator->set('pageCache', new FileCache); ``` -После того, как компонент зарегистрирован, вы можете получить к нему доступ, используя уникальный идентификатор (ID), -одним из двух следующих способов: +После того, как компонент зарегистрирован, вы можете обращаться к нему по его ID одним из двух следующих способов: ```php $cache = $locator->get('cache'); -// или альтернативный +// или $cache = $locator->cache; ``` -Как видно выше, [[yii\di\ServiceLocator]] позволяет обратиться к компоненту, как к свойству, -при помощи идентификатора (ID) компонента. -При обращении к компоненту впервые, [[yii\di\ServiceLocator]] будет использовать информацию о регистрации компонента, -что бы создать новый экземпляр компонента и вернёт его. -В дальнейшем при обращении к компоненту снова, Service Locator вернёт тот же экземпляр. +Как видно выше, [[yii\di\ServiceLocator]] позволяет обратиться к компоненту как к свойству используя его ID. +При первом обращении к компоненту, [[yii\di\ServiceLocator]] создаст новый экземпляр компонента на основе регистрационной +информации и вернёт его. При повторном обращении к компоненту Service Locator вернёт тот же экземпляр. -Что бы проверить, был ли идентификатор (ID) компонента уже зарегистрирован, можно использовать [[yii\di\ServiceLocator::has()]]. -Если вы вызовете [[yii\di\ServiceLocator::get()]] с недопустимым идентификатором (ID), тогда будет выброшено исключение. +Чтобы проверить, был ли идентификатор компонента уже зарегистрирован, можно использовать [[yii\di\ServiceLocator::has()]]. +Если вы вызовете [[yii\di\ServiceLocator::get()]] с несуществующим ID, будет выброшено исключение. - -Поскольку Service Locator`ы зачастую создаются с [конфигурациями](concept-configurations.md), -записываемое свойство с именем [[yii\di\ServiceLocator::setComponents()|components]] предоставляется так, -что Вы можете его настроить и зарегистрировать несколько компонентов одновременно. -Следующий код демонстрирует конфигурационный массив, -который может использоваться для настройки приложения и регистрации компонентов "db", "cache" и "search" : +Поскольку Service Locator часто используется с [конфигурациями](concept-configurations.md), в нём имеется доступное +для записи свойство [[yii\di\ServiceLocator::setComponents()|components]]. Это позволяет настроить и зарегистрировать +сразу несколько компонентов. Следующий код демонстрирует конфигурационный массив, который может использоваться одновременно +для настройки приложения и регистрации компонентов "db", "cache" и "search": ```php return [