Browse Source

locator and components alpha

Ivan Asmer 8 years ago
parent
commit
d362cc8cd3
2 changed files with 80 additions and 0 deletions
  1. 77 0
      LocatorComponents.md
  2. 3 0
      YiiDB.md

+ 77 - 0
LocatorComponents.md

@@ -0,0 +1,77 @@
+# Service Locator, Components
+
+## Service Locator
+
+Это объект, который предоставляет доступ к нескольким сервисам. В **Yii2** сервисами являются *компоненты*. **Service Locator** реализуется как наследник или экземпляр `yii\di\ServiceLocator`.
+
+`$app` - тоже **Service Locator**.
+
+### Основные методы и свойства **Service Locator**
+
+#### Создание
+```php
+use yii\di\ServiceLocator;
+
+$locator = new ServiceLocator;
+```
+
+#### Добавление сервиса
+
+Происходит с помощью метода `set`. Первый параметр - **идентификатор** компонента, его имя. Второй параметр - класс компонента и/или его настройки.
+
+```php
+$locator->set('mysession',  'yii\web\DbSession');
+```
+
+или 
+```php
+$locator->set('db',[
+                    'class' => 'yii\db\Connection',
+                    'dsn' => 'mysql:host=localhost;dbname=test',
+                    'username' => 'test',
+                    'password' => 'TeSt',
+                ]);
+```
+
+есть еще варианты: http://www.yiiframework.com/doc-2.0/yii-di-servicelocator.html#set()-detail
+
+
+#### Обращение к сервису
+
+Для обращения используется предварительно заданный ID
+
+```php
+$session = $locator->get('mysession');
+$session = $locator->mysession;
+```
+
+## Компоненты
+
+В приложении задаются с помощью конфигурации подобной следующей:
+
+```php
+[
+    'components' => [
+        'session' =>  'yii\web\DbSession'
+    ],
+]
+```
+
+Компоненты создаются *лениво*, т. е. при первом обращении к `get` или по `->`, в магическом методе `__get` `ServiceLocator`. 
+
+### Автозагрузка компонентов
+
+Для автозагрузки дополнительно укажите **идентификатор** компонента в параметре `bootstrap` конфигурации:
+
+
+```php
+[
+    'bootstrap'  => [
+        'session'
+    ],
+    'components' => [
+        'session' =>  'yii\web\DbSession'
+    ],
+]
+```
+

+ 3 - 0
YiiDB.md

@@ -144,3 +144,6 @@ $sortedUsers = $provider->getModels();
 
 Обычно *весь* объект `ActiveDataProvider` передается во view, где view может использоваться для настройки сортировок, пагинации и фильтрации.
 
+## Expression и функции mySQL
+TODO
+