README.md 5,8 КБ
Newer Older
Korotkov Danila's avatar
Korotkov Danila включено в состав коммита
1
[![Build Status](https://travis-ci.org/Jagepard/Rudra-Container.svg?branch=master)](https://travis-ci.org/Jagepard/Rudra-Container)
Коротков Данила's avatar
fix    
Коротков Данила включено в состав коммита
2
[![Maintainability](https://qlty.sh/badges/6ab84b91-8f18-409f-b350-b8f8a37e278c/maintainability.svg)](https://qlty.sh/gh/Jagepard/projects/Rudra-Container)
Korotkov Danila's avatar
Korotkov Danila включено в состав коммита
3
[![CodeFactor](https://www.codefactor.io/repository/github/jagepard/rudra-container/badge)](https://www.codefactor.io/repository/github/jagepard/rudra-container)
Коротков Данила's avatar
Коротков Данила включено в состав коммита
4
[![Coverage Status](https://coveralls.io/repos/github/Jagepard/Rudra-Container/badge.svg?branch=master)](https://coveralls.io/github/Jagepard/Rudra-Container?branch=master)
Danila Korotkov's avatar
Danila Korotkov включено в состав коммита
5
-----
Korotkov Danila's avatar
Korotkov Danila включено в состав коммита
6

Jagepard's avatar
Update    
Jagepard включено в состав коммита
7
# Rudra-Container | [API](https://github.com/Jagepard/Rudra-Container/blob/master/docs.md "Documentation API")
Jagepard's avatar
update    
Jagepard включено в состав коммита
8
#### Installation | Установка
Danila Korotkov's avatar
Danila Korotkov включено в состав коммита
9
```composer require rudra/container```
Jagepard's avatar
update    
Jagepard включено в состав коммита
10
#### Using | Использование
Jagepard's avatar
Jagepard включено в состав коммита
11
```php
Jagepard's avatar
Jagepard включено в состав коммита
12
use Rudra\Container\Rudra;
Jagepard's avatar
update    
Jagepard включено в состав коммита
13

Jagepard's avatar
Jagepard включено в состав коммита
14
Rudra::run();
Jagepard's avatar
update    
Jagepard включено в состав коммита
15
16
17
18
19
20
21
```
using Facade | используя фасад:
```php
use Rudra\Container\Facades\Rudra;
```
---
###### Setting | Настройка:
Jagepard's avatar
Jagepard включено в состав коммита
22

Jagepard's avatar
update    
Jagepard включено в состав коммита
23
24
25
---
Bind an interface to an implementation or pre-arranged factory <br> 
Связать интерфейс с реализацией или заранее подготовленной фабрикой:
Jagepard's avatar
fix    
Jagepard включено в состав коммита
26

Jagepard's avatar
update    
Jagepard включено в состав коммита
27
28
29
30
31
32
33
34
---
```php
Rudra::run()->binding([
    SomeInterface::class => SomeClass::class
    ...
    SomeInterface::class => SomeFactory::class
    ...
    SomeInterface::class => 'service-name'
Jagepard's avatar
Jagepard включено в состав коммита
35
36
37
38
39
40
41
42
    ...
    SomeInterface::class => function (){
        return new SomeClass();
    }
    ...
    SomeInterface::class => function (){
        return (new SomeFactory)->create();
    }    
Jagepard's avatar
update    
Jagepard включено в состав коммита
43
44
45
46
47
48
49
50
51
52
]);
```
using Facade | используя фасад:
```php
Rudra::binding([
    SomeInterface::class => SomeClass::class
    ...
    SomeInterface::class => SomeFactory::class
    ...
    SomeInterface::class => 'service-name'
Jagepard's avatar
Jagepard включено в состав коммита
53
54
55
56
57
58
59
60
        ...
    SomeInterface::class => function (){
        return new SomeClass();
    }
    ...
    SomeInterface::class => function (){
        return (new SomeFactory)->create();
    }
Jagepard's avatar
update    
Jagepard включено в состав коммита
61
62
63
64
65
]);
```
---
Installs services into a waiting container to be initialized when called:<br>
Устанавливает сервисы в контейнер ожидающих, для инициализации при вызове:
Jagepard's avatar
fix    
Jagepard включено в состав коммита
66

Jagepard's avatar
update    
Jagepard включено в состав коммита
67
---
Jagepard's avatar
Jagepard включено в состав коммита
68
```php
Jagepard's avatar
update    
Jagepard включено в состав коммита
69
70
Rudra::run()->waiting([
    'service-name' => [SomeClass::class, ['param-1', 'param-2']]
Jagepard's avatar
update    
Jagepard включено в состав коммита
71
72
    ...
    'service-name' => SomeFactory::class
Jagepard's avatar
Jagepard включено в состав коммита
73
74
75
76
77
78
79
80
81
    ...
    'service-name' => function (){
        return new SomeClass();
    }
    ...
     'service-name' => function (){
        return (new SomeFactory)->create();
    }
}
Jagepard's avatar
update    
Jagepard включено в состав коммита
82
])
Jagepard's avatar
Jagepard включено в состав коммита
83
```
Jagepard's avatar
update    
Jagepard включено в состав коммита
84
using Facade | используя фасад:
Jagepard's avatar
Jagepard включено в состав коммита
85
```php
Jagepard's avatar
update    
Jagepard включено в состав коммита
86
87
Rudra::waiting([
    'service-name' => [SomeClass::class, ['param-1', 'param-2']]
Jagepard's avatar
update    
Jagepard включено в состав коммита
88
89
    ...
    'service-name' => SomeFactory::class
Jagepard's avatar
Jagepard включено в состав коммита
90
91
92
93
94
95
96
97
98
    ...
    'service-name' => function (){
        return new SomeClass();
    }
    ...
     'service-name' => function (){
        return (new SomeFactory)->create();
    }
}
Jagepard's avatar
update    
Jagepard включено в состав коммита
99
])
Jagepard's avatar
Jagepard включено в состав коммита
100
```
Jagepard's avatar
update    
Jagepard включено в состав коммита
101
102
103
---
Add a bind to previously established ones:<br>
Добавляем привязку к ранее установленным:
Jagepard's avatar
fix    
Jagepard включено в состав коммита
104

Jagepard's avatar
update    
Jagepard включено в состав коммита
105
---
Jagepard's avatar
Jagepard включено в состав коммита
106
```php
Jagepard's avatar
update    
Jagepard включено в состав коммита
107
Rudra::run()->binding()->set([SomeInterface::class => SomeClass::class])
Danila Korotkov's avatar
Danila Korotkov включено в состав коммита
108
```
Jagepard's avatar
update    
Jagepard включено в состав коммита
109
using Facade | используя фасад:
Danila Korotkov's avatar
Danila Korotkov включено в состав коммита
110
```php
Jagepard's avatar
update    
Jagepard включено в состав коммита
111
Rudra::binding()->set([SomeClass::class, ['param-1', 'param-2']);
Jagepard's avatar
Jagepard включено в состав коммита
112
```
Jagepard's avatar
update    
Jagepard включено в состав коммита
113
114
115
---
Add the service to the previously installed ones:<br>
Добавляем сервис к ранее установленным:
Jagepard's avatar
fix    
Jagepard включено в состав коммита
116

Jagepard's avatar
update    
Jagepard включено в состав коммита
117
---
Jagepard's avatar
Jagepard включено в состав коммита
118
```php
Jagepard's avatar
update    
Jagepard включено в состав коммита
119
120
Rudra::run()->waiting()->set([
    'service-name' => [SomeClass::class, ['param-1', 'param-2']]
Jagepard's avatar
update    
Jagepard включено в состав коммита
121
122
    ...
    'service-name' => SomeFactory::class
Jagepard's avatar
update    
Jagepard включено в состав коммита
123
])
Jagepard's avatar
Jagepard включено в состав коммита
124
```
Jagepard's avatar
update    
Jagepard включено в состав коммита
125
using Facade | используя фасад:
Jagepard's avatar
Jagepard включено в состав коммита
126
```php
Jagepard's avatar
update    
Jagepard включено в состав коммита
127
128
Rudra::waiting()->set([
    'service-name' => [SomeClass::class, ['param-1', 'param-2']]
Jagepard's avatar
update    
Jagepard включено в состав коммита
129
130
    ...
    'service-name' => SomeFactory::class
Jagepard's avatar
update    
Jagepard включено в состав коммита
131
])
Jagepard's avatar
Jagepard включено в состав коммита
132
```
Jagepard's avatar
update    
Jagepard включено в состав коммита
133
134
135
---
Call the created service:<br>
Вызываем созданный сервис:
Jagepard's avatar
fix    
Jagepard включено в состав коммита
136

Jagepard's avatar
update    
Jagepard включено в состав коммита
137
---
Jagepard's avatar
Jagepard включено в состав коммита
138
```php
Jagepard's avatar
update    
Jagepard включено в состав коммита
139
Rudra::run()->get('service-name')
Jagepard's avatar
Jagepard включено в состав коммита
140
```
Jagepard's avatar
update    
Jagepard включено в состав коммита
141
using Facade | используя фасад:
Jagepard's avatar
Jagepard включено в состав коммита
142
```php
Jagepard's avatar
update    
Jagepard включено в состав коммита
143
Rudra::get('service-name')
Jagepard's avatar
Jagepard включено в состав коммита
144
```
Jagepard's avatar
update    
Jagepard включено в состав коммита
145
146
147
---
If the service does not have parameters, or the parameters are in the binding, then the service will be created automatically when calling<br>
Если сервис не имеет параметров, либо параметры имеются в привязке, то сервис будет создан автоматически при вызове
Jagepard's avatar
fix    
Jagepard включено в состав коммита
148

Jagepard's avatar
update    
Jagepard включено в состав коммита
149
---
Jagepard's avatar
Jagepard включено в состав коммита
150
```php
Jagepard's avatar
update    
Jagepard включено в состав коммита
151
Rudra::run()->get(Service::class)
Jagepard's avatar
Jagepard включено в состав коммита
152
```
Jagepard's avatar
update    
Jagepard включено в состав коммита
153
using Facade | используя фасад:
Jagepard's avatar
Jagepard включено в состав коммита
154
```php
Jagepard's avatar
update    
Jagepard включено в состав коммита
155
Rudra::get(Service::class)
Jagepard's avatar
Jagepard включено в состав коммита
156
```
Коротков Данила's avatar
Коротков Данила включено в состав коммита
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
## License

This project is licensed under the **Mozilla Public License 2.0 (MPL-2.0)** — a free, open-source license that:

- Requires preservation of copyright and license notices,
- Allows commercial and non-commercial use,
- Requires that any modifications to the original files remain open under MPL-2.0,
- Permits combining with proprietary code in larger works.

📄 Full license text: [LICENSE](./LICENSE)  
🌐 Official MPL-2.0 page: https://mozilla.org/MPL/2.0/

--------------------------
Проект распространяется под лицензией **Mozilla Public License 2.0 (MPL-2.0)**. Это означает:
 - Вы можете свободно использовать, изменять и распространять код.
 - При изменении файлов, содержащих исходный код из этого репозитория, вы обязаны оставить их открытыми под той же лицензией.
 - Вы **обязаны сохранять уведомления об авторстве** и ссылку на оригинал.
 - Вы можете встраивать код в проприетарные проекты, если исходные файлы остаются под MPL.

📄  Полный текст лицензии (на английском): [LICENSE](./LICENSE)  
🌐 Официальная страница: https://mozilla.org/MPL/2.0/