coolms / core-bundle
Symfony bundle wiring for coolms/core: the module bundle base class, DI extension and compiler passes, install/secret console commands, config cache warmer and the platform's HTTP plumbing
Requires
- php: ^8.5
- composer-runtime-api: ^2.0
- ext-mbstring: *
- api-platform/core: ^4.2
- coolms/core: ^2.0
- coolms/core-module: ^2.0
- coolms/dtmpl: ^2.0
- coolms/rql: ^1.0
- psr/clock: ^1.0
- psr/event-dispatcher: ^1.0
- psr/log: ^3.0
- symfony/config: ^8.0
- symfony/console: ^8.0
- symfony/dependency-injection: ^8.0
- symfony/event-dispatcher: ^8.0
- symfony/expression-language: ^8.0
- symfony/framework-bundle: ^8.0
- symfony/http-client-contracts: ^3.0
- symfony/http-foundation: ^8.0
- symfony/http-kernel: ^8.0
- symfony/process: ^8.0
- symfony/security-bundle: ^8.0
- symfony/serializer: ^8.0
- symfony/service-contracts: ^3.0
- symfony/translation-contracts: ^3.4.2
- symfony/uid: ^8.0
- symfony/validator: ^8.0
- symfony/yaml: ^8.0
Requires (Dev)
- coolms/core-doctrine: ^2.0
- phpunit/phpunit: ^12.5
- symfony/filesystem: ^8.0
- symfony/http-client: ^8.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-07 15:15:47 UTC
README
Symfony integration for the CoolMS platform kernel. The bundle base class every module extends, the DI extension and compiler passes, the install and secret console commands, and the platform's HTTP plumbing.
Notably it contains no persistence. Which storage backs the kernel's
contracts is decided by whichever adapter package is installed — see
coolms/core-doctrine.
Installation
composer require coolms/core-bundle coolms/core-doctrine
Name the adapter, or Composer installs the wrong thing and says it worked. This bundle pulls in
coolms/core-module, which requires the virtualcoolms/core-persistence-implementation. With no adapter that requirement cannot be satisfied — and instead of failing, Composer backtracks to a release of this bundle from before it declaredcoolms/core-moduleat all, then reports success.Measured at the time of writing:
composer require coolms/core-bundlealone resolved to v1.0.1 and pulledcoolms/dtmpl1.0.0 with it. Which older version it lands on is not the point; that it exits 0 is.
coolms/core-doctrineis the adapter that exists today; substitute another if you write one.
// config/bundles.php CoolMS\CoreBundle\CoreBundle::class => ['all' => true],
What is in here
| Area | What it does |
|---|---|
AbstractCoolmsBundle |
the base class every platform module's bundle extends |
DependencyInjection/ |
the Core extension, AbstractExtension for module extensions, and the platform compiler passes |
Console/ |
coolms:install and the coolms:secret:* commands |
Secret/ |
the env, encrypted-file and Vault secret stores |
Controller/, EventListener/, Http/ |
the base controller, RFC 7807 exception rendering, page-cache directives |
Config/, Json/, Option/, Webhook/ |
the config cache warmer, JSONC decoding, option sources, webhook signature verification |
Extending the platform
A module's bundle extends AbstractCoolmsBundle, and its DI extension extends
AbstractExtension:
use CoolMS\CoreBundle\AbstractCoolmsBundle; use CoolMS\CoreBundle\DependencyInjection\AbstractExtension; final class MyModuleBundle extends AbstractCoolmsBundle { public function getContainerExtension(): Extension { return new MyModuleExtension(); } }
AbstractExtension provides setResolveTargetEntities(), which accumulates the
interface-to-concrete map the platform resolves at compile time.
Declare
getAlias()explicitly in every extension. Symfony derives the alias from the class short name, andExtensionminus theExtensionsuffix is the empty string — so two modules that both omit it silently collide on every service id built from the alias.
Related packages
| Package | Role |
|---|---|
coolms/core |
kernel contracts |
coolms/core-module |
application services |
coolms/core-doctrine |
persistence adapter |
License
MIT. See LICENSE.