proklung / core-framework-extension-bundle
Core framework bundle for custom Symfony
Installs: 4
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
pkg:composer/proklung/core-framework-extension-bundle
Requires
- php: >=7.2 | ^8.0
- doctrine/annotations: ^1.10
- doctrine/cache: ^1.10
- doctrine/common: ^3.0
- doctrine/dbal: 2.13.1
- doctrine/doctrine-bundle: ^2.1
- doctrine/inflector: ^1.4
- doctrine/orm: ^2.7
- doctrine/persistence: ^2.0
- league/html-to-markdown: ^5.0
- php-http/httplug: ^2.2
- spiral/attributes: ^2.8
- symfony/amqp-messenger: ^4.4 || ^5.0
- symfony/cache: ^4.4 || ^5.0
- symfony/config: ^4.4 || ^5.0
- symfony/console: ^4.4 || ^5.0
- symfony/dependency-injection: ^4.4 || ^5.0
- symfony/event-dispatcher: ^4.4 || ^5.0
- symfony/expression-language: ^5.2
- symfony/filesystem: ^4.4 || ^5.0
- symfony/framework-bundle: ^4.4 || ^5.0
- symfony/google-mailer: ^4.4 || ^5.0
- symfony/http-client: ^4.4|^5.0
- symfony/http-foundation: ^4.4 || ^5.0
- symfony/http-kernel: ^4.4 || ^5.0
- symfony/lock: ^4.4 || ^5.0
- symfony/mailer: ^4.4 || ^5.0
- symfony/messenger: ^4.4 || ^5.0
- symfony/mime: ^4.4 || ^5.0
- symfony/monolog-bridge: ^4.4 || ^5.0
- symfony/notifier: ^5.0
- symfony/polyfill-php80: ^1.20
- symfony/polyfill-php81: ^1.22
- symfony/property-access: ^4.4 || ^5.0
- symfony/property-info: ^4.4 || ^5.0
- symfony/redis-messenger: ^4.4 || ^5.0
- symfony/routing: ^4.4 || ^5.0
- symfony/security-csrf: ^4.4 || ^5.0
- symfony/serializer: ^4.4 || ^5.0
- symfony/stopwatch: ^4.4|^5.0
- symfony/twig-bridge: ^4.4 || ^5.0
- symfony/validator: ^4.4 || ^5.0
- symfony/yaml: ^4.4 || ^5.0
Requires (Dev)
- dev-master
- 1.8.6
- 1.8.5
- 1.8.4
- 1.8.2
- 1.8.1
- 1.8.0
- 1.7.9
- 1.7.8
- 1.7.7
- 1.7.6
- 1.7.5
- 1.7.4
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.9
- 1.6.8
- 1.6.7
- 1.6.6
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.9
- 1.5.8
- 1.5.7
- 1.5.6
- 1.5.5
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.5
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.60
- 1.0.57
- 1.0.56
- 1.0.55
- 1.0.39
- 1.0.38
- 1.0.37
- 1.0.36
- 1.0.35
- 1.0.34
- 1.0.33
- 1.0.32
- 1.0.31
- 1.0.26
- 1.0.25
- 1.0.24
- 1.0.23
- 1.0.22
- 1.0.21
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
This package is auto-updated.
Last update: 2025-10-14 22:48:18 UTC
README
То, что входит в стандартный фрэймворк Symfony (в бандл Symfony\Bundle\FrameworkBundle\FrameworkBundle), но не завелось в кастомном варианте (потребовало форка) и(или) несет
необязательный функционал.
"Core" бандл. Без него функционал сервис-контейнера будет куцым (минималистичным). Многое не заработает.
По сути, это FrameworkBundle с наполовину выпиленным функционалом (не нужным в кастомных сборках) - формы, workflow, translators & и т.п.
Установка
composer.json:
"repositories": [ { "type": "git", "url": "https://github.com/proklung/core.framework.extension.bundle" } ]
composer require proklung/core-framework-extension-bundle
Конфигурационный файл
По адресу local/packages/framework.yaml (или /config/packages/framework.yaml для Wordpress).
Пример:
framework: validation: enabled: true enable_annotations: true cache: enabled: true app: cache.adapter.filesystem system: cache.adapter.system directory: '%kernel.project_dir%/bitrix/cache/symfony' default_memcached_provider: 'memcached://localhost' pools: my_cache_pool: public: true adapter: cache.adapter.filesystem default_lifetime: 600 twig: # Пути к шаблонам default_path: '%kernel.project_dir%/local/twig' paths: '%kernel.project_dir%/local/twig': ~ # С namespace '%kernel.project_dir%/../../vendor/symfony/web-profiler-bundle/Resources/views': WebProfiler cache: false cache_dir: '/bitrix/cache/twig' autoescape: 'name' autoescape_service: ~ autoescape_service_method: ~ base_template_class: 'Twig\Template' debug: '%kernel.debug%' strict_variables: '%kernel.debug%' dbal: enabled: true url: '%env(DATABASE_URL)%' charset: UTF8 default_connection: default types: ~ connections: default: url: "%env(DATABASE_URL)%" dbname: '%env(DB_NAME)%' user: '%env(DB_USER)%' password: '%env(DB_PASSWORD)%' host: localhost mapping_types: enum: string serializer: enabled: true enable_annotations: true max_depth_handler: false name_converter: 'serializer.name_converter.camel_case_to_snake_case' secrets: enabled: true vault_directory: '%kernel.project_dir%/config/secrets/%kernel.environment%' local_dotenv_file: '%kernel.project_dir%/.env.%kernel.environment%.local' decryption_env_var: 'base64:default::SYMFONY_DECRYPTION_SECRET' annotations: enabled: true file_cache_dir: '%kernel.cache_dir%/annotations' cache: 'file' annotations_ttl_cache: 7200 session: enabled: true csrf_protection: enabled: true property_access: enabled: true mailer: enabled: true messenger: enabled: true notifier: enabled: true lock: enabled: true resources: ~
Консольные команды
Стандартные:
debug:routerrouter:matchdebug:event-dispatcherdebug:containerdebug:autowiringconfig:dump-reference
Автоматическое подхватывание команд установленых битриксовых модулей
Конструкция пробегает по установленным (в папках local и bitrix модулям), где ищет файл cli.php.
Он должен возвращать массив с инициализированными командами этого модуля.
return [ new ExampleCommand(), // Должен наследоваться от \Symfony\Component\Console\Command\Command container()->get('console.command.about') // Из глобального контейнера ];
Эти команды регистрируются в общем для приложения контейнере команд и доступны через php bin/console.
Если пакет запускается не в Битриксе - ничего страшного, функционал игнорируется.
Расширения
Любое расширение может быть отключено проставлением false параметру enabled соответствующего раздела файла
framework.yaml.
DBAL
Validator
Cache
Serializer
Secrets
Lock
Notifier
Messenger
Всё согласно документации
Из нюансов:
- Auto-wiring
MessageHandlerInterfaceне срабатывает. Нужно прописывать сервисы саморучно. - Чтобы заработала конструкция с
RabbitMQна сервере должно быть установленоphp_amqpрасширение для PHP.
Mailer
framework.yaml:
mailer: enabled: true dsn: gmail+smtp://robotivanov2020:xxjqfjyegwmznrtb@default envelope: recipients: ['example@mail.ru'] # Кастомные параметры default_email_from: 'email@gmail.com' default_email_title: 'Super title' # Шаблон - для strftime, где элемент паттерна обрамлен скобками. dsn_file: file:///upload/emails/{Y}/{m}/{d}/@hash.eml
File mailer transport
use Symfony\Component\Mime\Email; $email = (new Email()) ->from('from@mail.ru') ->to('example@gmail.com') ->subject('Time for Symfony Mailer!') ->text('Sending emails is fun again!') ->html('<p>See Twig integration for better HTML integration!</p>'); /** @var \Symfony\Component\Mailer\Transport\TransportInterface $factory */ $factory = container()->get('custom_mailer_transports.filesystem'); $factory->send($email);
Письмо запишется в файл, находящийся по адресу, указанному параметром dsn_file в framework.yaml.
Кастомный отправитель писем
$factoryMail = container()->get('mailer_bundle.send_email_via_factory'); $message = $factoryMail->createMessage( 'example@gmail.com', 'Testing', 'Testing body', [ 'Лог' => '/my_app-2021-26-07.log' // Файл приаттачится к письму. ] ); $sender = container()->get('custom_mail_sender'); $sender->sendImmediately($message);
Чтение PHP 8 атрибутов на PHP >=7.2
С использованием компонента Spiral Framework.
Сервисы:
spiral.annotations_selective_reader- совмещенный читатель аннотаций Doctrine и PHP 8 атрибутов.spiral.psr6_selective_reader- PSR-6 совместимый кэшированный вариант совмещенного читателя.spiral.attribute_reader- отдельный читатель PHP 8 атрибутов.spiral.attribute_cached_reader- кэшированный вариант сервисаspiral.attribute_reader.spiral.annotation_reader- читатель аннотаций Doctrine из Spiral Framework.spiral.annotation_cached_reader- кэшированный вариант сервисаspiral.annotation_reader.
Если в свойствах фрэймворка (framework.yaml) параметр cache не равен file, то все кэшированные варианты сервисов удаляются из контейнера.
Параметры кэширования - file_cache_dir и ttl_cache - берутся из конфигурации framework.yaml.