# SOME DESCRIPTIVE TITLE. # Copyright (C) 2025, kolo # This file is distributed under the same license as the Argenta package. # FIRST AUTHOR , 2025. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Argenta \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-02 22:27+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: en\n" "Language-Team: en \n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.17.0\n" #: ../../root/dependency_injection.rst:4 msgid "Внедрение зависимостей" msgstr "" #: ../../root/dependency_injection.rst:6 msgid "" "Внедрение зависимостей (Dependency Injection, DI) — это паттерн " "проектирования, который помогает писать слабосвязанный, легко тестируемый" " и расширяемый код. Вместо того чтобы обработчики сами создавали нужные " "им объекты (зависимости), они получают их извне." msgstr "" #: ../../root/dependency_injection.rst:8 msgid "" "``Argenta`` использует библиотеку ``dishka`` для реализации DI, что " "позволяет декларативно объявлять зависимости прямо в сигнатурах ваших " "обработчиков. Подробнее о **DI**, **IoC** и API для создания провайдеров " "можно прочитать в `официальной документации dishka " "`_." msgstr "" #: ../../root/dependency_injection.rst:14 msgid "Основная идея" msgstr "" #: ../../root/dependency_injection.rst:16 msgid "" "Представьте, что вашему обработчику для работы нужен доступ к базе " "данных. Вместо импорта и инициализации соединения внутри функции, вы " "просто объявляете его как аргумент с аннотацией типа:" msgstr "" #: ../../root/dependency_injection.rst:19 msgid "" "``argenta.di.FromDishka`` является алиасом для ``dishka.FromDishka``, и " "они полностью взаимозаменяемы." msgstr "" #: ../../root/dependency_injection.rst:21 #: ../../root/dependency_injection.rst:29 #: ../../root/dependency_injection.rst:37 #: ../../root/dependency_injection.rst:60 msgid "**Пример использования:**" msgstr "" #: ../../root/dependency_injection.rst:27 msgid "" "``Argenta`` с помощью ``dishka`` разрешит зависимость по типу " "``Connection`` и внедрит её. Но прежде чем использовать зависимость, её " "необходимо объявить в провайдере:" msgstr "" #: ../../root/dependency_injection.rst:35 msgid "После создания провайдера его необходимо зарегистрировать в оркестраторе:" msgstr "" #: ../../root/dependency_injection.rst:46 msgid "Как это работает?" msgstr "" #: ../../root/dependency_injection.rst:48 msgid "В основе DI в Argenta лежат **провайдеры** и **контейнер**." msgstr "" #: ../../root/dependency_injection.rst:50 msgid "" "**Провайдер (``Provider``)** — это \"рецепт\", который объясняет, как " "создавать и настраивать ту или иную зависимость (например, подключение к " "БД, API-клиент или любой другой сервис)." msgstr "" #: ../../root/dependency_injection.rst:51 msgid "" "**Контейнер (IoC Container)** — это \"фабрика\", которая хранит все " "рецепты (провайдеры) и по запросу создаёт и выдаёт готовые зависимости." msgstr "" #: ../../root/dependency_injection.rst:56 msgid "Встроенные провайдеры" msgstr "" #: ../../root/dependency_injection.rst:58 msgid "" "``Argenta`` поставляется со встроенным провайдером, который даёт доступ к" " важным системным зависимостям без дополнительной настройки. Например, вы" " можете получить объект ``ArgSpace``, который содержит аргументы " "командной строки, переданные при запуске приложения." msgstr "" #: ../../root/dependency_injection.rst:69 msgid "Обмен данными между обработчиками" msgstr "" #: ../../root/dependency_injection.rst:71 msgid "" "Помимо DI, обработчики могут обмениваться данными в рамках сессии через " "**объект контекста**. В ``Argenta`` эту роль выполняет объект " "``DataBridge``." msgstr "" #: ../../root/dependency_injection.rst:73 msgid "" "Каждый обработчик может записывать в него данные, а также читать, " "обновлять и удалять их." msgstr "" #: ../../root/dependency_injection.rst:76 msgid "Подробнее об этом можно прочитать в разделе :ref:`root_api_bridge`." msgstr ""