{"id":36980106,"url":"https://github.com/liquetsoft/fias-symfony","last_synced_at":"2026-01-13T22:49:45.101Z","repository":{"id":46776315,"uuid":"185151322","full_name":"liquetsoft/fias-symfony","owner":"liquetsoft","description":"Бандл для импорта ФИАС в проект на Symfony","archived":false,"fork":false,"pushed_at":"2025-05-11T15:53:15.000Z","size":419,"stargazers_count":27,"open_issues_count":0,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-26T21:29:24.866Z","etag":null,"topics":["fias","php","symfony","symfony-bundle"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/liquetsoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-06T08:05:01.000Z","updated_at":"2025-05-11T15:51:41.000Z","dependencies_parsed_at":"2024-10-20T11:52:14.697Z","dependency_job_id":null,"html_url":"https://github.com/liquetsoft/fias-symfony","commit_stats":{"total_commits":126,"total_committers":4,"mean_commits":31.5,"dds":0.4841269841269841,"last_synced_commit":"2b5f811f9afb6147477ccc5ea81ffbdeded28aeb"},"previous_names":[],"tags_count":47,"template":false,"template_full_name":null,"purl":"pkg:github/liquetsoft/fias-symfony","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liquetsoft%2Ffias-symfony","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liquetsoft%2Ffias-symfony/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liquetsoft%2Ffias-symfony/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liquetsoft%2Ffias-symfony/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liquetsoft","download_url":"https://codeload.github.com/liquetsoft/fias-symfony/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liquetsoft%2Ffias-symfony/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28403750,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T21:51:37.118Z","status":"ssl_error","status_checked_at":"2026-01-13T21:45:14.585Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fias","php","symfony","symfony-bundle"],"created_at":"2026-01-13T22:49:44.426Z","updated_at":"2026-01-13T22:49:45.093Z","avatar_url":"https://github.com/liquetsoft.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"ФИАС bundle\n===========\n\n[![Latest Stable Version](https://poser.pugx.org/liquetsoft/fias-symfony/v)](https://packagist.org/packages/liquetsoft/fias-symfony)\n[![Total Downloads](https://poser.pugx.org/liquetsoft/fias-symfony/downloads)](https://packagist.org/packages/liquetsoft/fias-symfony)\n[![License](https://poser.pugx.org/liquetsoft/fias-symfony/license)](https://packagist.org/packages/liquetsoft/fias-symfony)\n[![Build Status](https://github.com/liquetsoft/fias-symfony/workflows/liquetsoft_fias/badge.svg)](https://github.com/liquetsoft/fias-symfony/actions?query=workflow%3A%22liquetsoft_fias%22)\n\nБандл symfony для установки данных из [ФИАС](https://fias.nalog.ru/).\n\nДля установки ФИАС используются xml-файлы, ссылки на которые предоставляются SOAP-сервисом информирования ФИАС.\n\n\n\nУстановка\n---------\n\nБандл устанавливается с помощью `composer` и следует стандартной структуре, поэтому на `symfony \u003e=4.2` устанавливается автоматически.\n\n1. Установить пакет с помощью composer:\n\n    ```bash\n    composer require liquetsoft/fias-symfony\n    ```\n\n2. В силу огромных размеров данных ФИАС, сущности `Doctrine` не регистрируются сразу в проекте. Для каждой предоставлен `MappedSuperclass`, с помощью которого можно получать обновления полей исключительно для тех сущностей, которые требуются проекту. Кроме того, это позволит дополнить или изменить структуру таблиц. Например, для добавления списка адресов:\n\n    ```php\n    \u003c?php\n    // src/Entity/AddressObject.php\n\n    namespace App\\Entity;\n\n    use Doctrine\\ORM\\Mapping as ORM;\n    use Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\AddrObj as LiquetsoftAddrObj;\n    use App\\Repository\\AddressObjectRepository;\n\n    /**\n     * Адреса.\n     */\n    #[ORM\\Entity(repositoryClass: AddressObjectRepository::class)]\n    class AddrObj extends LiquetsoftAddrObj\n    {\n    }\n    ```\n\n    Список доступных суперклассов:\n\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\AddrObj`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\AddrObjDivision`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\AddrObjTypes`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\AdmHierarchy`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\Apartments`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\ApartmentTypes`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\Carplaces`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\ChangeHistory`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\Houses`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\HouseTypes`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\MunHierarchy`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\NormativeDocs`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\NormativeDocsKinds`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\NormativeDocsTypes`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\ObjectLevels`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\OperationTypes`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\Param`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\ParamTypes`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\ReestrObjects`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\Rooms`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\RoomTypes`\n    * `Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\Steads`\n\n3. Отдельно следует создать сущность для управления версиями ФИАС, установленными на проекте, которая используется для обновления:\n\n    ```php\n    \u003c?php\n    // src/Entity/FiasVersion.php\n\n    namespace App\\Entity;\n\n    use Doctrine\\ORM\\Mapping as ORM;\n    use Liquetsoft\\Fias\\Symfony\\LiquetsoftFiasBundle\\Entity\\FiasVersion as LiquetsoftFiasVersion;\n\n    /**\n     * Сущность, которая хранит текущую версию ФИАС.\n     */\n    #[ORM\\Entity()]\n    class FiasVersion extends LiquetsoftFiasVersion\n    {\n    }\n    ```\n\n4. После создания всех сущностей, следует создать соответствующие им миграции, и применить их:\n\n    ```bash\n    bin/console make:migration\n    ```\n\n    ```bash\n    bin/console doctrine:migration:migrate\n    ```\n\n5. Необходимо указать бандлу какие именно сущности используются (те сущности, для которых не указан класс конвертации использоваться не будут) и в какие объекты конвертируются (важно понимать, что сущность на стороне проекта может быть любой, даже не унаследованной от одного из суперклассов, стандартный сериализатор symfony попробует преобразовать xml в указанный объект):\n\n    ```yaml\n    # config/packages/liquetsoft_fias.yaml\n    liquetsoft_fias:\n        # сущность, которая хранит версии ФИАС\n        version_manager_entity: App\\Entity\\FiasVersion\n        # массив, в котором указывается какие сущности в какой объект преобразовывать\n        entity_bindings:\n            ADDR_OBJ: App\\Entity\\AddrObj\n            ADDR_OBJ_DIVISION: App\\Entity\\AddrObjDivision\n            ADDR_OBJ_TYPES: App\\Entity\\AddrObjTypes\n            ADM_HIERARCHY: App\\Entity\\AdmHierarchy\n            APARTMENTS: App\\Entity\\Apartments\n            APARTMENT_TYPES: App\\Entity\\ApartmentTypes\n            CARPLACES: App\\Entity\\Carplaces\n            CHANGE_HISTORY: App\\Entity\\ChangeHistory\n            HOUSES: App\\Entity\\Houses\n            HOUSE_TYPES: App\\Entity\\HouseTypes\n            MUN_HIERARCHY: App\\Entity\\MunHierarchy\n            NORMATIVE_DOCS: App\\Entity\\NormativeDocs\n            NORMATIVE_DOCS_KINDS: App\\Entity\\NormativeDocsKinds\n            NORMATIVE_DOCS_TYPES: App\\Entity\\NormativeDocsTypes\n            OBJECT_LEVELS: App\\Entity\\ObjectLevels\n            OPERATION_TYPES: App\\Entity\\OperationTypes\n            PARAM: App\\Entity\\Param\n            PARAM_TYPES: App\\Entity\\ParamTypes\n            REESTR_OBJECTS: App\\Entity\\ReestrObjects\n            ROOMS: App\\Entity\\Rooms\n            ROOM_TYPES: App\\Entity\\RoomTypes\n            STEADS: App\\Entity\\Steads\n    ```\n\n6. Поскольку для записи в БД используется `Doctrine`, нужно отключить логгирование запросов, иначе скрипт падает с переполнением памяти:\n\n    ```yaml\n    # config/packages/doctrine.yaml\n    doctrine:\n        dbal:\n            logging: false # отключаем логгирование\n            profiling: false # отключаем профилирование\n    ```\n\n\n\nИспользование\n-------------\n\nБандл определяет несколько значимых команды консоли:\n\n1. Установка ФИАС с ноля\n\n    ```bash\n    bin/console liquetsoft:fias:install\n    ```\n\n2. Обновление ФИАС через дельту (установка запускается только в первый раз, а обновление следует поставить в качестве задачи для `cron`)\n\n    ```bash\n    bin/console liquetsoft:fias:update\n    ```\n\n3. Текущий статус серверов ФИАС (сервис информирования или сервер с файлами могут быть недоступны по тем или иным причинам)\n\n    ```bash\n    bin/console liquetsoft:fias:status\n    ```\n\n4. Список доступных для установки и обновления версий ФИАС\n\n    ```bash\n    bin/console liquetsoft:fias:versions\n    ```\n\n5. Загрузка и распаковка архива с полной версией ФИАС\n\n    ```bash\n    bin/console liquetsoft:fias:download /path/to/download latest --extract\n    ```\n\n6. Установка ФИАС из указанного каталога\n\n    ```bash\n    bin/console liquetsoft:fias:install_from_folder /path/to/extracted/fias\n    ```\n\n7. Обновление ФИАС из указанного каталога\n\n    ```bash\n    bin/console liquetsoft:fias:update_from_folder /path/to/extracted/fias\n    ```\n\n8. Принудительная установка номера текущей версии ФИАС\n\n    ```bash\n    bin/console liquetsoft:fias:version_set 20160101\n    ```\n\n\n\nПроизводительность\n------------------\n\nЕсть несколько возможностей ускорить импорт, используя настройки бандла:\n\n1. убрать неиспользуемые сущности; к примеру, если информация о парковочных местах не требуется, то можно отключить соответствие для CARPLACES\n\n    ```yaml\n    # config/packages/liquetsoft_fias.yaml\n    liquetsoft_fias:\n        entity_bindings:\n            # CARPLACES: App\\Entity\\Carplaces\n    ```\n2. поскольку в формате ГАР все данные разделены по папкам регионов, то можно исключить обработку файлов для неиспользуемых регионов\n\n    ```yaml\n    # config/packages/liquetsoft_fias.yaml\n    liquetsoft_fias:\n        files_filter:\n            - \"#^.+/extracted/30/AS_.+$#\" # разрешает все данные для региона\n            - \"#^.+/extracted/AS_.+$#\"    # разрешает общие словари\n            # все остальные файлы будут проигнорированы\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliquetsoft%2Ffias-symfony","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliquetsoft%2Ffias-symfony","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliquetsoft%2Ffias-symfony/lists"}