Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
57250cfe
Commit
57250cfe
authored
Jul 01, 2014
by
quot;brussens
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Russian translate concept-service-locator. md"
This reverts commit
520f65e1
.
parent
520f65e1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
90 deletions
+0
-90
concept-service-locator.md
docs/guide-ru/concept-service-locator.md
+0
-90
No files found.
docs/guide-ru/concept-service-locator.md
deleted
100644 → 0
View file @
520f65e1
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’ом.
Для использования Service Locator`
а первым шагом является регистрация компонентов.
Компонент может быть зарегистрирован с помощью
[
[yii\di\ServiceLocator::set()
]
].
Следующий код демонстрирует различные способы регистрации компонентов:
```
php
use
yii\di\ServiceLocator
;
use
yii\caching\FileCache
;
$locator
=
new
ServiceLocator
;
// register "cache" using a class name that can be used to create a component
$locator
->
set
(
'cache'
,
'yii\caching\ApcCache'
);
// register "db" using a configuration array that can be used to create a component
$locator
->
set
(
'db'
,
[
'class'
=>
'yii\db\Connection'
,
'dsn'
=>
'mysql:host=localhost;dbname=demo'
,
'username'
=>
'root'
,
'password'
=>
''
,
]);
// register "search" using an anonymous function that builds a component
$locator
->
set
(
'search'
,
function
()
{
return
new
app\components\SolrService
;
});
// register "pageCache" using a component
$locator
->
set
(
'pageCache'
,
new
FileCache
);
```
После того, как компонент зарегистрирован, вы можете получить к нему доступ, используя уникальный идентификатор (ID),
одним из двух следующих способов:
```
php
$cache
=
$locator
->
get
(
'cache'
);
// or alternatively
$cache
=
$locator
->
cache
;
```
Как видно выше,
[
[yii\di\ServiceLocator
]
] позволяет обратиться к компоненту, как к свойству,
при помощи идентификатора (ID) компонента.
При обращении к компоненту впервые,
[
[yii\di\ServiceLocator
]
] будет использовать информацию о регистрации компонента,
что бы создать новый экземпляр компонента и вернёт его.
В дальнейшем при обращении к компоненту снова, Service Locator вернёт тот же экземпляр.
Что бы проверить, был ли идентификатор (ID) компонента уже зарегистрирован, можно использовать
[
[yii\di\ServiceLocator::has()
]
].
Если вы вызовете
[
[yii\di\ServiceLocator::get()
]
] с недопустимым идентификатором (ID), тогда будет выброшено исключение.
Поскольку Service Locator
`ы зачастую создаются с [конфигурациями](concept-configurations.md),
записываемое свойство с именем [[yii\di\ServiceLocator::setComponents()|components]] предоставляется так,
что Вы можете его настроить и зарегистрировать несколько компонентов одновременно.
Следующий код демонстрирует конфигурационный массив,
который может использоваться для настройки приложения и регистрации компонентов "db", "cache" и "search" :
```php
return [
// ...
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=demo',
'username' => 'root',
'password' => '',
],
'cache' => 'yii\caching\ApcCache',
'search' => function () {
return new app\components\SolrService;
},
],
];
``
`
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment