- Bug Fixes
- [spiral/boot] Fix
Bootloader::initmethods sorting - [spiral/boot] Update return type hint for
Kernel::defineAppBootloadersmethod
- [spiral/boot] Fix
- Bug Fixes
- [spiral/core] Fixed some exceptions constructor signatures
- Bug Fixes
- [spiral/telemetry] Fixed
SpanInterfacesingleton rebinding - [spiral/prototype] Fixed working of Prototype in container scopes
- [spiral/telemetry] Fixed
- Bug Fixes
- [spiral/core] Fixed proxy class generator failure when the proxied interface contains static return type
- [spiral/core] Added resolving trace to Resolver exceptions
- Bug Fixes
- [spiral/core] Invoker::invoke() does not try to instantiate class to call a static function.
- [spiral/core] Reworked resolving traces in container exceptions
- Bug Fixes
- [spiral/router] Fix issue when group prefix is not applied to routes
- Bug Fixes
- [spiral/telemetry] Removed ID from a Queue consumed job span It allows proper grouping of traces by job name
- Bug Fixes
- [spiral/telemetry] Fixed scoped
TracerInterfacein theAbstractTracer::runScopemethod
- [spiral/telemetry] Fixed scoped
\Spiral\Core\Scopeis public now
- Bug Fixes
- [spiral/telemetry] Telemetry info was not propagated into log records
- Maintenance:
- Bumped up dependencies versions
- [spiral/prototype] component now uses
nikic/php-parserv5
- Core
AppEnvironmentenum: added aliases forproductionandtestenvironments by @roxblnfk.- Added a new option in the container to control default behavior when rebinding singletons.
In the future, the container will be stricter by default,
so it's recommended to set
allowSingletonsRebindingtofalseright away. - Fixed resolving of scoped Autowire objects.
- Cache
- Added events that are dispatched before cache operations like
KeyWriting,CacheRetrieving,KeyDeletingand failed operations likeKeyWriteFailed,KeyDeleteFailed. - Optimized operations with multiple cache records.
- Added an ability to set custom cache storage.
- Added events that are dispatched before cache operations like
- Router
- The
ServerRequestInterfaceobject is now passed into the call context of interceptors - Added a new middleware pipeline
LazyPipeline. The pipeline resolves middleware from the container right before execution to avoid ignoring container scopes. \Spiral\Http\Pipelineis deprecated now.- Added strict mode for
UriHandler. Strict mode ensures all required URI segments are validated. If any are missing, an exception is thrown.
- The
- Telemetry
AbstractTracer::runScope()method does not open a container scope anymore.- Spans are no longer created for each Middleware: the pipeline fills the list with called middlewares in one span. The number of pipelines equals the number of spans.
- The
http.response_content_lengthfield is no longer filled.
- Bug Fixes
- [spiral/telemetry] Improve types for
SpanInterface - [spiral/stempler] Fix parsing of
@inside a string that is not a directive
- [spiral/telemetry] Improve types for
- Bug Fixes
- [spiral/core] Define Auth* middleware in
httpscope - [spiral/auth-http] Fixed injectors binding via
Binder::bindmethod - [spiral/telemetry] Fixed returning type in TelemetryProcessor for Monolog
- [spiral/stempler] Fixed directory import in stempler component
- [spiral/core] Define Auth* middleware in
- Definitions of nullable parameters have been fixed according to PHP 8.4 deprecations.
ArrayStorage::setMultiple()now returnstrueinstead offalse.
- Bug Fixes
- [spiral/auth] Fixed configuration replacement for auth in HttpAuthBootloader
- [spiral/http] Fixed Server Request binding for root services
- Bug Fixes
- [spiral/core]
ServerRequestInterfaceis always resolved into a Proxy in thehttpscope - [spiral/cache]
EventDispatcheris now injected intoCacheManager
- [spiral/core]
- Bug Fixes
- [spiral/router] Router now uses proxied container to create middlewares in a right scope.
- [spiral/router] Better binding for the interceptor handler.
DebugBootloadernow uses a Factory Proxy to resolve collectors. Unresolved collectors don't break state populating flow.
- Bug Fixes
- [spiral/core] Improved introspecting of Container when a Container Proxy is provided into the
Introspector. - [spiral/http] Improved exception message when Input Manager can't get a Request in because of wrong scope.
GuardScopehas been deprecated. UseGuardInterfacedirectly instead.
- [spiral/core] Improved introspecting of Container when a Container Proxy is provided into the
- Bug Fixes
- [spiral/core] Added a proxy recursion detection a dependency on resolving: a
RecursiveProxyExceptionwill be thrown in this case. - [spiral/boot] Fixed concurrent writing and reading cached data on workers boot.
- [spiral/core] Added a proxy recursion detection a dependency on resolving: a
- Increased code quality by Rector.
- Bug Fixes
- [spiral/router] Fixed fallback interceptors handler in
AbstractTarget.
- [spiral/router] Fixed fallback interceptors handler in
- Increased code quality by Rector.
- High Impact Changes
- Scopes
- Deeper integration with Container Scopes: contextual scopes are created inside dispatcher scopes.
- Interceptors
- Added a new package
spiral/interceptors. spira/hmvcis deprecated now.
- Added a new package
- Scopes
- Other Features
- [spiral/queue] Added
Spiral\Queue\TaskInterfaceandSpiral\Queue\Taskwhich will contain all the necessary data for job processing.
- [spiral/queue] Added
- Medium Impact Changes
- [spiral/core] Interface
Spiral\Core\Container\SingletonInterfaceis deprecated, useSpiral\Core\Attribute\Singletoninstead. Will be removed in v4.0.
- [spiral/core] Interface
- Other Features
- Added
Spiral\Scaffolder\Command\InfoCommandconsole command for getting information about available scaffolder commands. - [spiral/core] Added the ability to bind the interface as a proxy via
Spiral\Core\Config\ProxyorSpiral\Core\Config\DeprecationProxy. - [spiral/core] Added the ability to configure the container using
Spiral\Core\Options. Added option checkScope to enable scope checking.
- Added
- Bug Fixes
- [spiral/tokenizer] Fixed finalize for listeners
- Other Features
- Added Tokenizer Listeners to the
Spiral\Command\Tokenizer\InfoCommandconsole command. - Added
Spiral\Command\Tokenizer\ValidateCommandconsole command for validating Tokenizer listeners.
- Added Tokenizer Listeners to the
- Other Features
- The
Spiral\Debug\Config\DebugConfighas been added for easy addition of tags and collectors. - [spiral/console] The ability to use enum as an option in a console command when configuring it with attributes has been added.
- The
- Other Features
- [spiral/boot] Added
Spiral\Boot\Bootloader\BootloaderRegistryInterfaceandSpiral\Boot\Bootloader\BootloaderRegistryto allow for easier management of bootloaders.
- [spiral/boot] Added
- Other Features
- [spiral/queue] Added
Spiral\Queue\Interceptor\Consume\RetryPolicyInterceptorto enable automatic job retries with a configurable retry policy. - [spiral/monolog-bridge] Added the ability to configure the Monolog messages format via environment variable
MONOLOG_FORMAT. - [spiral/translator] Added the ability to register additional locales directories.
- [spiral/prototype] Added console command
Spiral\Prototype\Command\ListCommandfor listing prototype dependencies.
- [spiral/queue] Added
- Bug Fixes
- [spiral/storage] Fixed
visibilityin the Storage configuration - [spiral/tokenizer] Improved
Tokenizer Infoconsole command - [spiral/debug] Assigning
nullinstead of usingunsetin the reset method - [spiral/core] Added checking
hasInstancein the parent scope
- [spiral/storage] Fixed
- Bug Fixes
- [spiral/core] Fixed with checking singletons in the
hasInstancemethod
- [spiral/core] Fixed with checking singletons in the
- Bug Fixes
- [spiral/core] Adding
forceparameter to thebindSingletonmethod
- [spiral/core] Adding
- Bug Fixes
- [spiral/events] Fixed Event Dispatcher rebinding
- [spiral/router] Fixed incorrect Concatenation of Route Pattern with Prefix in Route Group
- [spiral/boot] Fixed loading ENV variables from dotenv in Kernel System section
- Other Features
- [spiral/attributes] Added the ability to configure the Attributes cache or disable the cache
- Medium Impact Changes
- [spiral/core] Migration a significant portion of the internal operations from runtime to configuration time.
- [spiral/core] Replaced the previous array-based structure that was utilized to store information about bindings within the container. The new approach involves the utilization of Data Transfer Objects (DTOs).
- [spiral/core] Added a new container scope interface Spiral\Core\ContainerScopeInterface that can be used to run code withing isolated IoC scope.
- [spiral/scaffolder] Method
baseDirectoryofSpiral\Scaffolder\Config\ScaffolderConfigclass is deprecated.
- Other Features
- [spiral/tokenizer] Added the ability to look for interfaces and enums.
- [spiral/tokenizer] Added
tokenizer:infoconsole command - [spiral/prototype] Added PHP 8.1 support for prototype injector
- [spiral/auth] Added
Spiral\Auth\TokenStorageScope, this class can be used to get the concrete implementation of the token storage in a current container scope. - [spiral/auth-http] Added a
Spiral\Auth\TokenStorageInterfacebinding in theSpiral\Auth\Middleware\AuthMiddlewarewith the used TokenStorage. - [spiral/filters] Added
Spiral\Filters\Model\Mapper\Mapperthat sets values for filter properties. It utilizes a collection of casters, each designed to handle a specific type of value. - [spiral/filters]
- [spiral/scaffolder] Added new public method
declarationDirectoryto theSpiral\Scaffolder\Config\ScaffolderConfigclass that returns the directory path of the specified declaration, or default directory path if not specified. - [spiral/attributes] Added the ability to disable annotations reader support and the ability to replace instantiator for attributes reader
- Added support
psr/http-messagev2 - Added PHPUnit 10 support
- Bug Fixes
- [spiral/paginator] Fixed problem when paginator doesn't calculate
countPagescorrectly in constructor - [spiral/router] Fixed issue with default parameter values
- [spiral/auth-http] Setting default transport in
AuthTransportMiddleware - [spiral/filters] Fixed nullable Nested Filters
- [spiral/paginator] Fixed problem when paginator doesn't calculate
- Bug Fixes
- [spiral/filters] Fixed InputScope to allow retrieval of non-bag input sources
- [spiral/pagination] Fixed problem when paginator doesn't calculate
countPagescorrectly in constructor
- Medium Impact Changes
- [spiral/queue] Added the ability to use mixed types as job payload.
- Bug Fixes
- [spiral/scaffolder] Fixed the problem with redefined command types.
- [spiral/console] Fixed the problem with commands description with signature definition.
- [spiral/tokenizer] Fixed the problem with using named parameters in class located by a tokenizer.
- [spiral/telemetry] Fixed LogTracer elapsed time log.
- Other Features
- [spiral/console] Added the ability to guess option mode, unless it is explicitly passed in the
Spiral\Console\Attribute\Optionattribute. - Updated psalm version to 5.0.
- Added support doctrine/annotations 2.x
- [spiral/console] Added the ability to guess option mode, unless it is explicitly passed in the
- Bug Fixes
- [spiral/scaffolder] Fixed the problem with namespace option in some scaffolder commands.
- High Impact Changes
- [spiral/tokenizer] Added the ability to cache tokenizer listeners.
- [spiral/core] Container with isolated memory scopes.
- Medium Impact Changes
- A minimal version of
symfony/consoleincreased to^6.1.
- A minimal version of
- Other Features
- [spiral/core] Added container
Singletonattribute to replaceSpiral\Core\SingletonInterface. - [spiral/console] Added the ability to configure console commands via attributes.
- [spiral/console] Added the ability to prompt for missing required arguments.
- [spiral/scaffolder] Added the ability to specify a custom
namespacein theSpiral\Scaffolder\Command\BootloaderCommand,Spiral\Scaffolder\Command\CommandCommand,Spiral\Scaffolder\Command\ConfigCommand,Spiral\Scaffolder\Command\ControllerCommand,Spiral\Scaffolder\Command\JobHandlerCommand,Spiral\Scaffolder\Command\MiddlewareCommandconsole commands. - [spiral/cache] Added the ability to configure the prefix in the storage alias.
- Added
defineInterceptorsmethod inSpiral\Bootloader\DomainBootloaderclass. - [spiral/filter] Makes Setter attribute for the spiral/filters component repeatable.
- [spiral/sendit] Adds custom transports registrar for SendIt component.
- [spiral/core] Added container
- Bug Fixes
- [spiral/filters] Fixed problem with validation nested filters.
- [spiral/core] Fixed infinite recursion on using for class name binding to the same class name.
- [spiral/queue] Removing the
QueueInterfacebinding as a singleton. - [spiral/core] Fixed the problem with singleton objects creation with custom arguments.
- Medium Impact Changes
- [spiral/reactor] Method
removeClassofSpiral\Reactor\Partial\PhpNamespaceclass is deprecated. Use methodremoveElementinstead. - [spiral/boot] Deprecated Kernel constants and add new function
defineSystemBootloadersto allow for more flexibility in defining system bootloaders.
- [spiral/reactor] Method
- Other Features
- [spiral/router] Added named route patterns registry
Spiral\Router\Registry\RoutePatternRegistryInterfaceto allow for easier management of route patterns. - [spiral/exceptions] Improved the exception trace output for both the plain and console renderers to provide more detailed information about previous exceptions.
- [spiral/exceptions] Made the Verbosity enum injectable to allow for easier customization and management of
verbosity levels from env variable
VERBOSITY_LEVEL. - [spiral/reactor] Added methods
removeElement,getClass,getElements,getEnum,getEnums,getTrait,getTraits,getInterface,getInterfacesin the classSpiral\Reactor\Partial\PhpNamespace. - [spiral/reactor] Added methods
getElements,getEnum,getEnums,getTrait,getTraits,getInterface,getInterfacesin the classSpiral\Reactor\FileDeclaration.
- [spiral/router] Added named route patterns registry
- Medium Impact Changes
- [spiral/boot] Class
Spiral\Boot\BootloadManager\BootloadManageris deprecated. Will be removed in version v4.0. - [spiral/stempler] Adds null locale processor to remove brackets
[[ ... ]]when don't use Translator component.
- [spiral/boot] Class
- Other Features
- [spiral/session] Added session handle with cache driver.
- [spiral/router] Added routes with
PATCHmethod intoroute:listcommand. - [spiral/boot] Added
Spiral\Boot\BootloadManager\InitializerInterface. This will allow changing the implementation of this interface by the developer. - [spiral/boot] Added
Spiral\Boot\BootloadManager\StrategyBasedBootloadManager. It allows the implementation of a custom bootloaders loading strategy. - [spiral/boot] Added the ability to register application bootloaders via object instance or anonymous object.
- [spiral/boot] Removed
finalfrom theSpiral\Boot\BootloadManager\Initializerclass.
- Bug Fixes
- [spiral/views] Fixed problem with using view context with default value.
- [spiral/queue] Added
Spiral\Telemetry\Bootloader\TelemetryBootloaderdependency to QueueBootloader. - [spiral/core] (PHP 8.2 support) Fixed problem with dynamic properties in
Spiral\Core\Container.
- High Impact Changes
- [spiral/router] Added the ability to add a
prefixto thenameof all routes in a group. - [spiral/auth] Added
Spiral\Auth\TokenStorageProviderInterfaceto allow custom token storages and an ability to set default token storage viaauthconfig. - [spiral/telemetry] Added new component to collect and report application metrics.
- [spiral/router] Added the ability to add a
- Medium Impact Changes
- Removed go files from the repository
- Other Features
- [spiral/auth-http] Added
Spiral\Auth\Middleware\Firewall\RedirectFirewallmiddleware to redirect user to login page if they are not authenticated.
- [spiral/auth-http] Added
- Bug Fixes
- [spiral/http] Fixed error suppressing in the
Spiral\Http\Middleware\ErrorHandlerMiddleware - [spiral/stempler] Fixed documentation link
- [spiral/auth] Fixed downloads badge
- [spiral/http] Fixed error suppressing in the
- High Impact Changes
- Medium Impact Changes
- Other Features
- [spiral/queue] Added the ability to pass headers in the
headersparameter in the job handlers. - [spiral/telemetry] Added new component
- [spiral/queue] Added new option
headersin theSpiral\Queue\Optionsand new interfaceSpiral\Queue\ExtendedOptionsInterface. - [spiral/events] Added event interceptors.
- [spiral/core] Added container instance to callback function parameters in
Spiral\Core\ContainerandSpiral\Core\ContainerScope. - [spiral/core] Improved ContainerException message
- [spiral/queue] Added the ability to pass headers in the
- Bug Fixes
- [spiral/queue] Fixed problem with using push interceptors in Queue component
- Other Features
- [spiral/filters] Added
Spiral\Filter\ValidationHandlerMiddlewarefor handling filter validation exception. - [spiral/router] Fixed the problem with parsing a pattern with
0value in route parameter. - [spiral/validation] Added the ability to configure the default validator via method
setDefaultValidatorin theSpiral\Validation\Bootloader\ValidationBootloader.
- [spiral/filters] Added
- Bug Fixes
- Removed readonly from
Spiral\Stempler\Transform\Import\Bundle - Fixed the problem with parsing a route pattern with zero value #773
- Fixed phpdoc for AuthorizationStatus::$topics property
- Removed readonly from
- High Impact Changes
- Component
spiral/data-grid-bridgeis removed fromspiral/frameworkrepository. Please, use standalone packagespiral/data-grid-bridgeinstead. - Component
spiral/data-gridis removed fromspiral/frameworkrepository. Please, use standalone packagespiral/data-gridinstead. Spiral\Boot\ExceptionHandlerhas been eliminated. NewSpiral\Exceptions\ExceptionHandlerwith interfacesSpiral\Exceptions\ExceptionHandlerInterface,Spiral\Exceptions\ExceptionRendererInterfaceandSpiral\Exceptions\ExceptionReporterInterfacehave been added.- Console commands
Spiral\Command\Cycle\MigrateCommand,Spiral\Command\Cycle\SyncCommand,Spiral\Command\Cycle\UpdateCommand,Spiral\Scaffolder\Command\MigrationCommand,Spiral\Scaffolder\Command\Database\EntityCommand,Spiral\Scaffolder\Command\Database\RepositoryCommand,Spiral\Command\Database\ListCommand,Spiral\Command\Database\TableCommand,Spiral\Command\Migrate\InitCommand,Spiral\Command\Migrate\MigrateCommand,Spiral\Command\Migrate\ReplayCommand,Spiral\Command\Migrate\RollbackCommand,Spiral\Command\Migrate\StatusCommandis removed. Use same console commands fromspiral/cycle-bridgepackage. - Console commands
Spiral\Command\GRPC\ListCommand,Spiral\Command\GRPC\GenerateCommandis removed. Use same console commands fromspiral/roadrunner-bridgepackage. - Classes
Spiral\Auth\Cycle\Token,Spiral\Auth\Cycle\TokenStorage,Spiral\Cycle\RepositoryInjector,Spiral\Cycle\SchemaCompiler,Spiral\Domain\CycleInterceptoris removed. Use same classes fromspiral/cycle-bridgeinstead. - Bootloaders
Spiral\Bootloader\Jobs\JobsBootloader,Spiral\Bootloader\Server\LegacyRoadRunnerBootloader,Spiral\Bootloader\Server\RoadRunnerBootloader,Spiral\Bootloader\ServerBootloader,Spiral\Bootloader\GRPC\GRPCBootloaderis removed. Usespiral/roadrunner-bridgepackage. - Bootloaders
Spiral\Bootloader\Cycle\AnnotatedBootloader,Spiral\Bootloader\Cycle\CycleBootloader,Spiral\Bootloader\Cycle\ProxiesBootloader,Spiral\Bootloader\Cycle\SchemaBootloader,Spiral\Bootloader\Database\DatabaseBootloader,Spiral\Bootloader\Database\DisconnectsBootloader,Spiral\Bootloader\Database\MigrationsBootloaderis removed. Usespiral/cycle-bridgepackage. - Bootloader
Spiral\Bootloader\Broadcast\BroadcastBootloaderis removed. Usespiral/roadrunner-broadcastpackage instead. - Bootloader
Spiral\Bootloader\Http\WebsocketsBootloaderis removed. - Component
spiral/annotationsis removed. Usespiral/attributesinstead. - Added return type
voidto a methodspublish,publishDirectory,ensureDirectoryinSpiral\Module\PublisherInterfaceinterface. - Removed
Spiral\Http\SapiDispatcherandSpiral\Http\Emitter\SapiEmitter. Please, use packagespiral/sapi-bridgeinstead. - Bootloader
Spiral\Bootloader\Http\DiactorosBootloaderis removed. You can use the bootloaderSpiral\Nyholm\Bootloader\NyholmBootloaderfrom the packagespiral/nyholm-bridgeto register PSR-7/PSR-17 factories.
Spiral\Http\Diactoros\ResponseFactory,Spiral\Http\Diactoros\ServerRequestFactory,Spiral\Http\Diactoros\StreamFactory,Spiral\Http\Diactoros\UploadedFileFactory,Spiral\Http\Diactoros\UriFactoryare removed. You can usespiral/nyholm-bridgeto define PSR-17 factories.- [spiral/exceptions] All handlers have been renamed into renderers.
HandlerInterfacehas been deleted. - [spiral/exceptions] Added
Spiral\Exceptions\Verbosityenum. - [spiral/router] Removed deprecated method
addRoutein theSpiral\Router\RouterInterfaceandSpiral\Router\Router. Use methodsetRouteinstead. - [spiral/validation]
Spiral\Validation\Checker\EntityCheckeris removed. UseSpiral\Cycle\Bootloader\ValidationBootloaderwithSpiral\Cycle\Validation\EntityCheckerfrom packagespiral/cycle-bridge - [spiral/validation] Removed deprecated methods
datetimeandtimezonein theSpiral\Validation\Checker\TypeCheckerclass. UseSpiral\Validation\Checker\DatetimeChecker::valid()andSpiral\Validation\Checker\DatetimeChecker::timezone()instead. - [spiral/validation] Added return type
array|callable|stringto the methodparseCheckinSpiral\Validation\ParserInterfaceinterface. - [spiral/validation] Added
array|string|\Closureparameter type of$rulesto the methodgetRulesinSpiral\Validation\RulesInterfaceinterface. - [spiral/validation] Added
array|\ArrayAccessparameter type of$datato the methodvalidateinSpiral\Validation\ValidationInterfaceinterface. - [spiral/validation] Added return type
mixedto the methodgetValue, addedmixedparameter type of$defaultto the methodgetValue, addedmixedparameter type of$contextto the methodwithContext, added return typemixedto the methodgetContextinSpiral\Validation\ValidatorInterfaceinterface. - [spiral/filters] Added return type
voidandmixedparameter type of$contextto the methodsetContext, added return typemixedto the methodgetContextinSpiral\Filters\FilterInterfaceinterface. Added return typemixedto the methodgetValueinSpiral\Filters\InputInterface. - [spiral/dumper] The
DumperComponent has been removed from the Framework. - [spiral/http] Config
Spiral\Config\JsonPayloadConfigmoved to theSpiral\Bootloader\Http\JsonPayloadConfig. - [spiral/reactor] Added return type
mixedandarray|stringparameter type of$search,array|stringparameter type of$replaceto the methodreplaceinSpiral\Reactor\ReplaceableInterface. - [spiral/session] Added return type
voidto the methodresumeinSpiral\Session\SessionInterface. - [spiral/session] Added return type
selfandmixedparameter type of$valueto the methodsetinSpiral\Session\SessionSectionInterface. - [spiral/session] Added return type
boolto the methodhasinSpiral\Session\SessionSectionInterface. - [spiral/session] Added return type
mixedandmixedparameter type of$defaultto the methodgetinSpiral\Session\SessionSectionInterface. - [spiral/session] Added return type
mixedandmixedparameter type of$defaultto the methodpullinSpiral\Session\SessionSectionInterface. - [spiral/session] Added return type
voidto the methoddeleteinSpiral\Session\SessionSectionInterface. - [spiral/session] Added return type
voidto the methodclearinSpiral\Session\SessionSectionInterface. - [spiral/pagination] Added return type
selfto the methodlimit, added return typeselfto the methodoffsetinSpiral\Pagination\PaginableInterface - [spiral/prototype] Parameter
$printernow is not nullable inSpiral\Prototype\Injectorconstructor. - [spiral/models] Added return type
self, addedmixedparameter type of$valueto the methodsetField, added return typemixed, addedmixedparameter type of$defaultto the methodgetField, added return typeselfto the methodsetFieldsinSpiral\Models\EntityInterface. - [spiral/models] Added return type
mixedto the methodgetValueinSpiral\Models\ValueInterface. - [spiral/logger] Added return type
selfto the methodaddListener, added return typevoidto the methodremoveListenerinSpiral\Logger\ListenerRegistryInterfaceinterface. - [spiral/hmvc] Added return type
mixedto the methodprocessinSpiral\Core\CoreInterceptorInterfaceinterface. - [spiral/hmvc] Added return type
mixedto the methodcallActioninSpiral\Core\CoreInterfaceinterface. - [spiral/encrypter] Added return type
mixedto the methoddecryptinSpiral\Encrypter\EncrypterInterfaceinterface. inSpiral\DataGrid\InputInterfaceinterface. - [spiral/http] Added return type
arrayandmixedparameter type of$fillerto the methodfetch, added return typemixedto the methodoffsetGet, added return typemixedandmixedparameter type of$defaultto the methodgetinSpiral\Http\Request\InputBagclass. - [spiral/config] Added return type
voidto the methodsetDefaultsinSpiral\Config\ConfiguratorInterfaceinterface. - [spiral/core] Comprehensive code refactoring. A lot of signatures from
Spiral\Corenamespace has been changed. New features:- Added supporting for PHP 8.0 Union types.
- Added supporting for variadic arguments:
- array passed by parameter name.
- with named arguments inside.
- with positional arguments inside.
- value passed by parameter name.
- positional trailed values.
- array passed by parameter name.
- Support for default object value.
- Added supporting for referenced parameters in Resolver.
- The Factory now more strict: no more arguments type conversion.
- Added the
Spiral\Core\ResolverInterface::validateArgumentsmethod for arguments validation. - Support for
WeakReferencebindings.
- [spiral/boot] Method
startingrenamed tobooting, methodstartedrenamed tobootedin the classSpiral\Boot\AbstractKernel. - [spiral/boot] Added return type
selfto the methodsetinSpiral\Boot\DirectoriesInterfaceinterface. - [spiral/boot] Added return type
mixedandmixedparameter type of$defaultto the methodget, added inSpiral\Boot\EnvironmentInterfaceinterface. - [spiral/boot] Added return type
staticto the methodaddFinalizer, added return typevoidto the methodfinalizeinSpiral\Boot\FinalizerInterfaceinterface. - [spiral/boot] Added return type
selfto the methodaddDispatcher, added return typemixedto the methodserveinSpiral\Boot\KernelInterfaceinterface. - [spiral/boot] Added
exceptionHandlerparameter in theSpiral\Boot\AbstractKernel::createmethod. - [spiral/boot]
Spiral\Boot\AbstractKernelconstructor is protected now. - [spiral/boot] Added return type
mixedto the methodloadData, added return typevoidandmixedparameter type of$datato the methodsaveDatainSpiral\Boot\MemoryInterfaceinterface. - [spiral/boot] In
Bootloaders, the name of the method has been changed fromboottoinit. In the code of custom Bootloaders, need to change the name of the method. - [spiral/console] Added return type
voidto the methodwriteHeader, added return typevoidto the methodexecute, methodwhiteFooterrenamed towriteFooter, added return typevoidto the methodwriteFooterinSpiral\Console\SequenceInterfaceinterface. - [spiral/files] Added return type
boolto the methoddelete, added return typeboolto the methoddeleteDirectory, added return typeboolto the methodtouch, added return typeboolto the methodsetPermissionsinSpiral\Files\FilesInterface. - [spiral/views] Added return type
mixedto the methodresolveValueinSpiral\Views\ContextInterface. - [spiral/views] Added return type
mixedto the methodgetValueinSpiral\Views\DependencyInterface. - [spiral/translator] Added return type
voidto a methodssetLocales,saveLocaleinSpiral\Translator\Catalogue\CacheInterface. - [spiral/translator] Added return type
voidto the methodsaveinSpiral\Translator\CatalogueManagerInterface. - [spiral/storage] Added
string|\Stringableparameter type of$idto a methodsgetContents,getStream,exists,getLastModified,getSize,getMimeType,getVisibilityinSpiral\Storage\Storage\ReadableInterface. - [spiral/storage] Added
string|\Stringableparameter type of$idto a methodscreate,setVisibility,delete. Addedstring|\Stringableparameter type of$idandmixedparameter type of$contentto the methodwrite, addedstring|\Stringableparameter type of$sourceand$destinationto a methodscopy,moveinSpiral\Storage\Storage\WritableInterface. - [spiral/stempler] Added return type
mixedandmixedparameter type of$defaultto the methodgetAttributeinSpiral\Stempler\Node\AttributedInterface. - [spiral/stempler] Added return type
mixedandmixedparameter type of$nodeto the methodenterNode, added return typemixedandmixedparameter type of$nodeto the methodleaveNodeinSpiral\Stempler\VisitorInterface. - [spiral/sendit] Dropped support
pipelineparameter inmailerconfig. Please, use the parameterqueueinstead. - [spiral/security] Added return type
selfto a methodsaddRole,removeRoleinSpiral\Security\PermissionsInterface - [spiral/security] Added return type
selfto a methodsset,removeinSpiral\Security\RulesInterface - [spiral/distribution] Bootloader
Spiral\Bootloader\Distribution\DistributionBootloadermoved to theSpiral\Distribution\Bootloader\DistributionBootloader, configSpiral\Bootloader\Distribution\DistributionConfigmoved to theSpiral\Distribution\Config\DistributionConfig. - [spiral/storage] Bootloader
Spiral\Bootloader\Storage\StorageBootloadermoved to theSpiral\Storage\Bootloader\StorageBootloader, configSpiral\Bootloader\Storage\StorageConfigmoved to theSpiral\Storage\Config\StorageConfig. - [spiral/validation] Bootloader
Spiral\Bootloader\Security\ValidationBootloadermoved to theSpiral\Validation\Bootloader\ValidationBootloader. - [spiral/views] Bootloader
Spiral\Bootloader\Views\ViewsBootloadermoved to theSpiral\Views\Bootloader\ViewsBootloader. - [spiral/boot] By default, overwriting of environment variable values is disabled, the default value
for
$overwritechanged fromtruetofalsein theSpiral\Boot\Environment. - [spiral/queue] Removed method
pushCallableinSpiral\Queue\QueueTrait. - [spiral/dotenv-bridge] Bootloader
Spiral\DotEnv\Bootloader\DotenvBootloadermust be moved from theLOADsection to theSYSTEMsection in the applicationApp.phpfile.
- Component
- Medium Impact Changes
- A minimal version of
PHPincreased to^8.1 - A minimal version of
symfony/finderincreased to^5.3 - A minimal version of
league/flysystemincreased to^2.3 - A minimal version of
symfony/consoleincreased to^6.0 Spiral\Snapshots\FileSnapshooterusesVerbosityenum instead of int flag.Spiral\Snapshots\FileSnapshooterusesExceptionRendererInterface $rendererinstead ofHandlerInterface $handler.Spiral\Snapshots\SnapshotterInterfaceusage replaced withSpiral\Exceptions\ExceptionReporterInterfacein all classes.- Removed
bin/spiral. Uses thespiral/roadrunner-clipackage instead.
- A minimal version of
- Other Features
- [spiral/queue] Added queue interceptors.
- [spiral/debug] Added
Spiral\Debug\StateConsumerInterface. - [spiral/boot] Added new
bootmethod inBootloaders. It will be executed after theinitmethod is executed in allBootloaders. The oldbootmethod has been renamed toinit. See High Impact Changes section. - [spiral/boot] Added automatic booting of
Bootloadersrequested in theinitandbootmethods. They no longer need to be specified explicitly inDEPENDENCIESproperty or indefineDependenciesmethod. - [spiral/monolog-bridge] Added the ability to configure the default channel using the configuration file or
environment variable
MONOLOG_DEFAULT_CHANNEL. - [spiral/serializer] Added a new spiral/serializer component. Contains an interface and a minimal implementation that can be extended by external serializers.
- [spiral/queue] Added the ability to configure serializers for different types of jobs.
- Added class
Spiral\Exceptions\Reporter\FileReporter, which implementsSpiral\Exceptions\ExceptionReporterInterfaceand can create text files with information about an exception.
- High Impact Changes
- Medium Impact Changes
- Low Impact Changes
- Other Features
- Bug Fixes
- Medium Impact Changes
- Dispatcher
Spiral\Http\SapiDispatcheris deprecated. Will be moved tospiral/sapi-bridgeand removed in v3.0
Spiral\Http\Emitter\SapiEmitter,Spiral\Http\Exception\EmitterException,Spiral\Http\EmitterInterface,Spiral\Http\SapiRequestFactoryis deprecated. Will be removed in version v3.0. After the release of v3.0, must use the packagespiral/sapi-bridgefor SAPI functionality.- The
dumpercomponent is deprecated and will be removed in v3.0
- Dispatcher
- Other Features
- [spiral/http] Added parameter
chunkSizein thehttpconfiguration file. - [spiral/queue] Added attribute
Queueableto mark classes that can be queued. AddedSpiral\Queue\QueueableDetectorclass to easily check if an object should be queued or not and get the queue from an attribute or getQueue method on the object. - [spiral/broadcasting] New component with common interfaces (RR2.0 support)
- [spiral/http] Added parameter
- Medium Impact Changes
- Bootloaders
Spiral\Bootloader\Broadcast\BroadcastBootloader,Spiral\Bootloader\Http\WebsocketsBootloaderare deprecated. Will be removed in v3.0. - Console commands
Spiral\Command\Database\ListCommand,Spiral\Command\Database\TableCommand,Spiral\Command\GRPC\GenerateCommand,Spiral\Command\GRPC\ListCommand,Spiral\Command\Migrate\AbstractCommand,Spiral\Command\Migrate\InitCommand,Spiral\Command\Migrate\MigrateCommand,Spiral\Command\Migrate\ReplayCommand,Spiral\Command\Migrate\RollbackCommand,Spiral\Command\Migrate\StatusCommandare deprecated. Will be removed in v3.0. - Classes
Spiral\Broadcast\Config\WebsocketsConfig,Spiral\Broadcast\Middleware\WebsocketsMiddleware,Spiral\GRPC\Exception\CompileException,Spiral\GRPC\GRPCDispatcher,Spiral\GRPC\LocatorInterface,Spiral\GRPC\ProtoCompiler,Spiral\GRPC\ServiceLocator,Spiral\Http\LegacyRrDispatcher,Spiral\Http\RrDispatcherare deprecated. Will be removed in v3.0. - Changed package replacement strategy. "*" is replaced by "self.version".
- Sapi emitter now supports streaming emitting.
- [spiral/data-grid-bridge] Removed deprecation in
classes
Spiral\DataGrid\Annotation\DataGrid,Spiral\DataGrid\Bootloader\GridBootloader,Spiral\DataGrid\Config\GridConfig,Spiral\DataGrid\Interceptor\GridInterceptor,Spiral\DataGrid\Response\GridResponse,Spiral\DataGrid\Response\GridResponseInterface,Spiral\DataGrid\GridInput.
- Bootloaders
- Other Features
- [spiral/data-grid-bridge] Added method
addWriterinSpiral\DataGrid\Bootloader\GridBootloader. - Extended version of
psr/logdependency from^1.0to1 - 3
- [spiral/data-grid-bridge] Added method
- High Impact Changes
- [spiral/queue] Added queue injector #592
- [spiral/cache] Added cache injector #600
- Medium Impact Changes
- [spiral/tokenizer] Added ability to use scopes for indexing files with specific scopes #593
- Other Features
- [spiral/boot] Added ability to disable overwriting env variables for
Spiral\Boot\Environment#599 - [spiral/storage] Added storage bucket factory #601
- [spiral/console] Added return types for interface compatibility #591
- [spiral/boot] Added ability to disable overwriting env variables for
- High Impact Changes
- Medium Impact Changes
- [spiral/session] Added
Spiral\Session\SessionFactoryInterface. Now you can use custom implementation of sessions. - [spiral/scaffolder] Console
commands
Spiral\Scaffolder\Command\MigrationCommand,Spiral\Scaffolder\Command\Database\RepositoryCommand,Spiral\Scaffolder\Command\Database\EntityCommandis deprecated. Will be moved tospiral/cycle-bridgeand removed in v3.0 - [spiral/scaffolder] Scaffolder
Spiral\Scaffolder\Declaration\MigrationDeclarationis deprecated. Will be moved tospiral/cycle-bridgeand removed in v3.0 - [spiral/attributes] Class annotations will be discovered from class traits.
- A minimal version of
PHPincreased to^7.4
- [spiral/session] Added
- Other Features
- [spiral/prototype] Added
queueandcacheproperties - [spiral/mailer] Added ability to set delay for messages
- [spiral/queue] Added NullDriver
- [spiral/mailer] Class
Spiral\Mailer\Messageis no longer final and is available for extension
- [spiral/prototype] Added
- High Impact Changes
- Medium Impact Changes
- [spiral/sendit] Method
getQueuePipelineofSpiral\SendIt\Config\MailerConfigclass is deprecated. Use methodgetQueueinstead. Added environment variablesMAILER_QUEUEandMAILER_QUEUE_CONNECTION
- [spiral/sendit] Method
- Other Features
- Added Symfony 6 support
- High Impact Changes
- Medium Impact Changes
- Classes
Spiral\Validation\Checker\EntityChecker,Spiral\Auth\Cycle\Token,Spiral\Auth\Cycle\TokenStorage,Spiral\Cycle\RepositoryInjector,Spiral\Cycle\SchemaCompiler, is deprecated. Will be moved tospiral/cycle-bridgeand removed in v3.0 - Console commands
Spiral\Command\Cycle\MigrateCommand,Spiral\Command\Cycle\SyncCommand,Spiral\Command\Cycle\UpdateCommandis deprecated. Will be moved tospiral/cycle-bridgeand removed in v3.0 - Bootloaders
Spiral\Bootloader\Cycle\AnnotatedBootloader,Spiral\Bootloader\Cycle\CycleBootloader,Spiral\Bootloader\Cycle\ProxiesBootloader,Spiral\Bootloader\Cycle\SchemaBootloaderis deprecated. Usespiral/cycle-bridgeinstead - Interceptor
Spiral\Domain\CycleInterceptoris deprecated. Will be moved tospiral/cycle-bridgeand removed in v3.0 - Scaffolders
Spiral\Scaffolder\Declaration\Database\Entity\AnnotatedDeclaration,Spiral\Scaffolder\Declaration\Database\RepositoryDeclarationis deprecated. Will be moved tospiral/cycle-bridgeand removed in v3.0 - Component
spiral/data-grid-bridgeis deprecated. Will be moved to spiral/cycle-bridge and removed in v3.0 - Component
spiral/annotationsis deprecated. Usespiral/attributesinstead - A minimal version of
doctrine/annotationsincreased to^1.12 - [spiral/validation] Error messages for 'number::lower' and 'number::higher' rules were changed to reflect that these checks are in fact 'lower or equal' and 'higher or equal'. You may need to adjust translations file accordingly.
- [spiral/sendit] Added ability to use
syncdriver for mail queue (#398)
- Classes
- Other Features
- [spiral/validation] Add array::count, array::range, array::shorter and array::longer
- [spiral/queue] New component with common interfaces (RR2.0 support) rules (#435)
- [spiral/cache] New component with common interfaces (RR2.0 support)
- [spiral/views] Allow custom loader in ViewManager
- [spiral/monolog-bridge] Added ability to configure Monolog processors
-
New Functionality
- Added new
spiral/storagecomponent (See https://spiral.dev/docs/component-storage) - Added new
spiral/distributioncomponent (See https://spiral.dev/docs/component-distribution) - Introduced and improved
spiral/attributescomponent (See https://spiral.dev/docs/component-attributes)
- Added new
-
High Impact Changes
- Added
league/flysystem: ^2.0dependency.
- Added
-
Other Features
- Added basic RoadRunner 2.0 support (only HTTP)
- [data-grid] Implement fragment/expression injections for DataGrid sorters (#400)
- [data-grid] Datagrid/fix inarray accessor edge case (#379)
- [boot] ExceptionHandler does not account for error_reporting setting (#386)
-
High Impact Changes
- A minimal version of
monolog/monologincreased to^2.2
- A minimal version of
-
Other Features
- Added PHP 8 support
- [spiral/prototype] added typed properties support for php 7.4
- [spiral/validation] arrayOf validation checker
- [spiral/validation] introduce
nowparameter in datetime checker - [spiral/validation] extract abstract validator
- [spiral/data-grid] datetime from formatted string value needed
- [spiral/data-grid] add mixed specifications
- [spiral/data-grid] make grid factory more reusable
- [spiral/data-grid] add
ilikepostgres filter - [spiral/domain] add pipeline interceptor
- [spiral/domain] extract permissions provider for
GuardInterceptor
-
Bug Fixes
- [spiral/prototype] name conflict resolver
- [spiral/prototype] trait remove problem
- [spiral/prototype] inherited injections problem
-
High Impact Changes
- A minimal version of
symfony/translationincreased to^5.1 - A minimal version of
symfony/consoleincreased to^5.1 - A minimal version of
symfony/finderincreased to^5.1
- A minimal version of
-
Medium Impact Changes
- Dependence of
zend/zend-diactoroswas replaced bylaminas/laminas-diactoros ^2.3 - [spiral/dumper]
Spiral\Debug\Dumperclass marked asfinal
- Dependence of
-
Other Features
- [spiral/http] Implementation of RFC7231 "Accept" header parser
- [spiral/http] Simplified ErrorHandlerMiddleware injection
- [spiral/reactor] Fix render comment for namespace declaration
- [spiral/validation] Add
any,noneconditions
- RR updated to 1.8.2 (don't use broken 1.8.1 tag)
- Jobs plugin updated to 2.2.0 (see the changelog)
- Allow json requests with empty body by @rauanmayemir
- Add the ability to control view cache separately from DEBUG via VIEW_CACHE env variable
- added support for Postgres Cycle Auth tokens
- added the ability to redefine the error message in Guarded annotation
- Update RR to 1.8.0
- [bugfix] invalid value associated with validation context by CycleInterceptor
- added
JobRegistrywith the ability to route jobs into custom pipelines - added the ability to bind job name to the concrete implementation
- added EntityChecker to check the existence and uniqueness of ORM entities
- the Auth/CookieTransport will respect the application base path
- the command
encrypt:keyis no longer private - cleaned up the Publisher extension by @ncou
- fixed a number of PHPUnit 8.0 warnings
- RouterBootloader no longer blocks the HttpConfig (easier middleware creation)
- show list of actions in multi-action routes in
route:listby @ncou - added default alias for
notNullvalidation rule - fixed path behavior in
grpc:generatecommand by @matthewhall-ca - FilterInterceptor can automatically detect the validation context
- RoadRunner version updated to 1.7.0
- build.sh script updated. Included
-trimpathandmusltarget - RoadRunner version updated to 1.6.4
- jobs updated to version 2.1.3
- roadrunner updated to version 1.6.3
- fix issue with debug http collector fail in console mode
- WebSocket module updated to v1.1.0
- added reload module
- fix
TableCommandrender for fragments - Add return status code to the ConsoleDispatcher.php
- minor code-base quality improvements
- added
route:listcommand - app server updated with recent roadrunner version
- queue server does not show
PUSHmessage anymore - added
roave/security-advisories
- bump
spiral/validationdependency - register
DatetimeCheckerin theValidationBootloader
- added striker payload validation for jobs
- added support for SerializerRegistryInterface for spiral/jobs
- refactor in WebsocketBootloader
- fixed bug in stop sequence of ws roadrunner service
- added broadcast service
- added WebSocket server
- minor refactoring in json exception handler
- bugfix: client exceptions no longer sent with 500 code in application/json payloads
- bugfix: fixed issue with forced expiration of session auth tokens
- the framework can work without any snapshooter
- improved code coverage
- fixed invalid middleware association for http state collector
- improved debug state management
- exceptions are able to display current request state, logs and etc.
- ability to register custom debug state collectors
- the plain snapshots enabled by default instead of HTML based
- improved error handling for JSON requests
- lighter API and abstract class base injection for
spiral/filters
- FileSnapshotter now sends logs into "default" log channel
- CycleInterceptor use parameter as entity value instead of entity role
- added interceptable core support and DomainBootloader
- the ability to automatically inject Cycle entity via route parameter
- the ability to automatically pre-validate Filters
- the ability to authorize controller methods using @Guarded annotation
- improving the Cycle TokenStorage for better testing capabilities
- authorizes trait removed in favor of core interceptors
- Auth Cycle\TokenStorage now requests TransactionInterface directly, for simpler testing
- json payload middleware read stream content via (string) conversion
- JsonPayloadParserBootloader renamed to JsonPayloadsBootloader
- minor CS in CycleBootloader, cleaner dependencies
- the ORM schema can be pre-heated automatically
- ability to create injectors to interfaces
- added auth component
- new CS fixes in compliance with PSR-12
- minor improvements in session scopes
- added health service to the app server
- added CookieManager for simpler access to cookies in request scope
- added SessionScope for simpler access to session in request scope
- added automatic CS formatting
- update
cycle/proxy-factorydependency
spiral/jobsupdated to2.0- job handlers introduced
- typo fix:
JsonPayloadBootloadtoJsonPayloadParserBootloader
- added
JsonPayloadMiddlewareandJsonPayloadBootloader - more tests
- added 7.4 tests to travis
- 7.1 support is officially dropped
- ability to inject constructor dependencies into cycle repositories and classes from app container
- added support for Prometheus metrics for
jobs(queue) andgrpcservices - exceptions will use default style
- bugfix: inability to render
FragmentInterfaceindb:tablecommand view:compilewon't compileNativeEnginetemplates anymore- ability to skip server download if version did not change
- fixed config method names in spiral/views
- cycle/annotated is now based on doctrine/annotations
- cycle/annotated is not required to work with cycle anymore
- DatabaseTable command has been modified to display composite FKs
- added ability to configure worker relay using ENV RR_WORKER by @myavchik
- automatically configure worker based on rr relay settings
- cycle/annotated is not required for cycle to work
- added MetricsInterface service for Prometheus
- fixed i18n tests
- updated RoadRunner dependency
- added RR services: headers, metrics
- updated dependency (and interfaces) with cycle/proxy-factory
- http component split into cookies and csrf packages
- decoupled from zend/diactoros
- http component split into cookies and csrf packages
- decoupled from zend/diactoros
- added support for pre-loading specific relations using eager or lazy loading methods
- cycle:sync does not require configuration now
- added
dumprrfunction (dump to STDERR)
- no more migration warnings while running static analysis on a project
- fixed container binding for cycle repository
- migration command now adds
\nafter each migration - bugfix
vendor/bin/spiral get-binaryon linux machines
grpc:generatecommand now includes all proto files from given directoryRbacBootloaderrenamed toGuardBootloader
- added
vendor/bin/spiral get-binarycommand to download application server by @Alex-Bond
- added GRPC dispatcher
- added encrypter:key command
- added binary server release
- renamed MvcBootloader to RouterBootloader
- minor cs
- TBD
- Fixed bug with incorrect Request association for already exists bags
- Added charset UTF-8 for response wrapper
- Improved error handling for CLI applications
- Ability to specify JSON response code inside jsonSerialize
- Fixed a bug when error message was converted to empty array
- Fixed a bug when multidepth requests contained invalid prefix (in case of depth more than 3)
- ability to locate view cache files by view name and namespace
- ability to add conditions to skip validation rules
- ValidatesEntity now caches last set of produced errors
- Ability to use EntityInterface as parameter for ValidatorInterface->setData() method
- Improved cache management for StemplerEngine (fixed issue with non-stable cache key)
- Ability to force view recompilation thought ViewManager
- first public release, no BC changes
- improvements in Translation indexations
- bugfix in Loader caused an exception with Swift::autoloader
urifunction restored- Router is now available outside of http scope
- Cache directory is now relative to runtime directory
- DateTime accessors now can accept DateTimeInterface
- Dependencies update
- Validator can now accept checkers outside of it's config
- Proper timezone detection for datetime accessors
- RenderException now shows original error location in views
- Improvements in cache management for Twig engine
Encrypter
- Proper exception when encryption key is invalid
Session
- Session does not force session id in cookie when session not started
Framework
- Dropped support of PHP5+
- Added secure session implementation
- Code coverage improvements
- Twig updated to 2.0 branch
- PHPUnit updated to 5.0 branch
- Components split into separate repositories
- Symfony dependencies updated to 3.0 branch
- added
bind()function to specify IoC dependencies in configs - ViewSource class added into views
Common
- Dropped support of PHP5+
- Code coverage improvements
- Cache component removed (replaced with PSR-16)
- Views component moved to Framework bundle
- Validation component moved to Framework bundle
- Translation component moved to Framework bundle
- Encryption component moved to Framework bundle
- Migrations component moved in
- Automatic migration generation is now part of Migration component
- Security component moved in
- Monolog dependency removed
- PHPUnit updated to 5.0 branch
- Symfony dependencies updated to 3.0 branch
- Schema definitions moved to array constants instead of default property values
- Simplified PaginatorInterface
- Reactor component moved in
- Debugger (log manager) component removed
- Improved implementation of Tokenizer component
- Lazy wire declaration for FactoryInterface
Core
- ScoperInterface moved into Framework bundle
- Container now validates scalar agument types when supplied by user
DBAL
- Improved polyfills for SQLServer
- Improved SQL injection prevention
- Improved timezone management
- Refactoring of DBAL schemas
- Bugfixes
- Unions with ordering in SQLServer
- Invalid parameter handling for update queries with nested selection
- Pagination classes are immutable now
- Ability to use nested queries in JOIN statements
- on argument in join() methods is deprecated, use on() function directly
Models
- Removed features
- Embedded validations
- Magic getter and setter methods via __call()
- setValue and packValue methods added
- "fields" property is now private
- SolidableTrait is now part of models ORM
- Refactoring of SchemaBuilder
- RecordSelector does not extend SelectQuery anymore
- Transactional (UnitOfWork) support
- Improvements in memory mapping
- Improvements in tree operations (save)
- Removed features
- ActiveRecord thought direct table communication
- MutableNumber accessor
- Validations
- Bugfixes
- ManyToMany relations to non-saved records
- BelongsToRelation to non-saved records
- Definition of morphed relations must be explicit now
- All ORM entities MUST have proper primary key now
- Ability to define custom column types in combination with accessors
- Relation loaders and schemas are immutable now
- Memory scope are optional now
- Record does not have "source" method by default now (see SourceTrait)
- Optimizations in load method with "using" option
- Added late bindings (locate outer record based on Interface or role name)
- Added detach() method into HasMany relation
Stempler
- StemplerLoader synced with Twig abstraction, StemplerSource introduced
- SourceContext (twig like) have been added
ODM
- Moved to latest PHP7 mongo drivers
- Removed features
- Validations
- Removed parent document reference in compositions
- Scalar array split into multiple versions
- CompositableInterface improved
- Document does not have "source" method by default now (see SourceTrait)
Storage
- Improved implementation of RackspaceServer
- Added GridFS server support