High-Performance Long-Living PHP Framework for modern enterprise application development

Overview

Spiral Framework


Documentation · Discord · Telegram · Twitter

Spiral Framework is a High-Performance Long-Living Full-Stack framework and group of over sixty PSR-compatible components. The Framework execution model based on a hybrid runtime where some services (GRPC, Queue, WebSockets, etc.) handled by RoadRunner application server and the PHP code of your application stays in memory permanently (anti-memory leak tools included).

Features

  • Battle-tested since 2013
  • Lightning fast full-stack PHP framework
  • PSR-{2,3,4,6,7,11,15,16,17} compliant
  • Powerful application server and resident memory application kernel
  • Native support of queue (AMQP, SQS, Beanstalk) and background PHP workers
  • GRPC server and client
  • Pub/Sub, event broadcasting
  • HTTPS, HTTP/2+Push, FastCGI
  • PCI DSS compliant
  • Encrypted cookies, signed sessions, CSRF-guard
  • MySQL, MariaDB, SQLite, PostgreSQL, SQLServer support, auto-migrations
  • The ORM you will use for the next 25 years
  • Intuitive scaffolding and prototyping (it literally writes code for you)
  • Helpful class discovery via static analysis
  • Authentication, RBAC security, validation, and encryption
  • Dynamic template engine to create your own HTML tags (or just use Twig)
  • MVC, HMVC, CQRS, Queue-oriented, RPC-oriented, CLI apps... any apps

Skeletons

App Type Current Status Install
spiral/app Latest Stable Version https://github.com/spiral/app
spiral/app-cli Latest Stable Version https://github.com/spiral/app-cli
spiral/app-grpc Latest Stable Version https://github.com/spiral/app-grpc
spiral/app-keeper Latest Stable Version https://github.com/spiral/app-keeper

License:

MIT License (MIT). Please see LICENSE for more information. Maintained by Spiral Scout.

Comments
  • Add array::count, array::range, array::shorter and array::longer rules

    Add array::count, array::range, array::shorter and array::longer rules

    | Q | A | ------------- | --- | Bugfix? | ❌ | Breaks BC? | ✔️ updated error messages for number::lower and number::higher | New feature? | ✔️

    Allows to validate number of elements in array

    Feature Component: Validation 
    opened by vladgorenkin 18
  • [Rector] Update rector and re-run with LevelSetList::UP_TO_PHP_74

    [Rector] Update rector and re-run with LevelSetList::UP_TO_PHP_74

    | Q | A | ------------- | --- | QA? | ✔️

    This PR do the followings:

    • Update rector dependency to latest 0.12.21
    • Update LevelSetList to LevelSetList::UP_TO_PHP_74 as current composer.json require php 7.4, and run it.
    • Set auto import option to make typed property use its name instead of fqcn when possible.

    Note: For update to typed property, it only update private property only when possible to avoid BC break.

    opened by samsonasik 14
  • [Validation Package] Allow validation data to be set directly from an EntityInterface

    [Validation Package] Allow validation data to be set directly from an EntityInterface

    This PR allows validation data to be set from a DataEntity (or EntityInterface to be precise)....

    Usecase = >

    • Currently
    
    $data = [];
    $data[self::ARGS_FULL_NAME] = $this->argument(self::ARGS_FULL_NAME);
    $data[self::ARGS_MONIKER] = $this->argument(self::ARGS_MONIKER);
    $data[self::ARGS_EMAIL] = $this->argument(self::ARGS_EMAIL);
    
    $transformedData = new SomeDataEntity($data);
    
    $val->setData($transformedData->getFields());
    
    //Do something else with $transformedData
    
    • This PR =>
    $validator = $validator->withDataEntity($transformedData);
    

    Just sugar syntax, but i have found myself this past hour filling an EntityInterface and passing it to the validator.

    opened by adelowo 13
  • Introduce self-rendering filters

    Introduce self-rendering filters

    | Q | A | ------------- | --- | Bugfix? | ❌ | Breaks BC? | ✔️ | New feature? | ✔️

    Allows to override the error rendering for a specific filter.

    Example of usage

    The renderer:

    <?php
    declare(strict_types=1);
    
    namespace App;
    
    use Spiral\Filters\FilterInterface;
    use Spiral\Filters\RenderErrorsInterface;
    
    /**
     * @template-implements RenderErrorsInterface<FilterInterface>
     */
    final class SomeErrorsRenderer implements RenderErrorsInterface
    {
        /**
         * {@inheritdoc}
         */
        public function render(FilterInterface $filter)
        {
            return [
                'success' => false,
                'errors' => $filter->getErrors(),
            ];
        }
    }
    
    

    The filter:

    <?php
    
    declare(strict_types=1);
    
    namespace App;
    
    use Spiral\Filters\Filter;
    use Spiral\Filters\RenderWith;
    
    #[RenderWith(SomeErrorsRenderer::class)]
    final class FilterWithErrorsRenderer extends Filter
    {
        public const SCHEMA = [
            'id' => 'query:id'
        ];
    
        public const VALIDATES = [
            'id' => [
                ['notEmpty', 'err' => '[[ID is not valid.]]']
            ]
        ];
    }
    
    Component: Validation Component: Filters 
    opened by kafkiansky 11
  • [Rector] Update to rector 0.12.15, apply parallel, and RemoveUnusedPrivatePropertyRector

    [Rector] Update to rector 0.12.15, apply parallel, and RemoveUnusedPrivatePropertyRector

    | Q | A | ------------- | --- | QA? | ✔️

    • updated rector dependency to 0.12.15
    • apply parallel process to speed up check
    • apply RemoveUnusedPrivatePropertyRector
    • Enable allow-plugins for composer 2.2 support.
    opened by samsonasik 11
  • [Validation package] Don't validate the same data set twice (details inside)

    [Validation package] Don't validate the same data set twice (details inside)

    validate is called in getErrors here and isValid here.

    The goal is to remove code duplication.. Both isValid and getErrors calls the validate method before returning a response to the caller.. This leads to performing the same chore twice.

    For instance, say i call isValid (validation runs here), if i get a falsy value, i obviously would want to call getErrors to show the user who went wrong. On calling getErrors,the data is re-validated before the errors are returned.

    opened by adelowo 11
  • Open Spiral\Validation\Validator for extension

    Open Spiral\Validation\Validator for extension

    Hi,

    I'm writing package that allows to validate objects with annotated properties. Here is a gist of what validated object looks like so you could get the idea:

    final class TestData implements \ArrayAccess
    {
        use ArrayAccessTrait;
    
        /**
         * @Assert\Type\NotEmpty(
         *   asString=true,
         *   message="Should not be empty",
         *   conditions={"withAll": {"typeNotNull"}}
         * )
         */
        public $typeNotEmpty;
    
        /**
         * @Assert\Type\NotNull(message="Should not be null")
         */
        public $typeNotNull;
        ...
    

    Validation is built upon Spiral's default validator which only works with arrays or \ArrayAccess objects. So either validated object needs to implement \ArrayAccess (which is a not very clean solution, but works), or validated object needs to be properly casted to array every time Validator is constructed/Validator::withData is used (which is worse, especially if it gets any more complex than calling get_object_vars).

    I'd like to avoid either option and just extend existing validator to fit my purpose. The problem is validator is closed for extension via inheritance, so I'd need to copy existing implementation which I'd like to avoid.

    Do you think it is safe to open Spiral\Validation\Validator for extension (and tweak ValidatorInterface a bit to allow broader type of arguments to be used as data)?

    Thanks in advance

    Feature 
    opened by vladgorenkin 10
  • Issue #456: Align arguments resolving in NamedArgumentsInstantiator with native PHP 8 behavior.

    Issue #456: Align arguments resolving in NamedArgumentsInstantiator with native PHP 8 behavior.

    | Q | A | ------------- | --- | Bugfix? | ✔️ or TBD, see changes in tests. | Breaks BC? | ❌ or TBD, see changes in tests. | New feature? | ❌ or TBD, see changes in tests. | Issues | #456 | Docs PR | (none)

    The arguments resolving in NamedArgumentsInstantiator has some edge cases where it diverges from native behavior in PHP 8. This PR adds more test cases and attempts to align the behavior more with PHP 8.

    (I might still do some tweaking with force-push)

    Component: Attributes 
    opened by donquixote 9
  • Implement lazy-loading of cli commands

    Implement lazy-loading of cli commands

    | Q | A | ------------- | --- | Bugfix? | ❌ | Breaks BC? | ✔️ | New feature? | ✔️

    This PR implements lazy-loading of CLI commands to prevent unneeded commands from being constructed. This speeds up CLI initialization and solves situations when one command's dependency breaks all other commands (e.g. a command whose dependency uses result of ORM query will break migrate:init when no migrations were applied).

    Lazy-loaded command declaration is done through upgrading Command::NAME's visibility to public so locators can extract command's name (and optionaly description) from command without constructing it.

    Example:

    class LazyCommand extends Spiral\Console\Command {
        public const NAME = 'lazy';
    
        public function __construct() {
            sleep(5); // this will only be run when command is executed, not on console initialization
        }
    }
    
    Feature Component: Console 
    opened by vladgorenkin 9
  • Container isn't compatible with PHP 8

    Container isn't compatible with PHP 8

    https://github.com/spiral/framework/blob/master/src/Core/src/Container.php#L197 is not compatible with PHP 8 giving

    Method ReflectionParameter::getClass() is deprecated
    

    It could be replaced with something like:

    $name = $param->getType() && !$param->getType()->isBuiltin() ? new ReflectionClass($param->getType()->getName()) : null;
    
    Bug 
    opened by samdark 8
  • Error handler for JSON:API specs

    Error handler for JSON:API specs

    I just started to implement JSON:API server with Spiral framework. JSON:API requires use of application/vnd.api+json media type usage for HTTP requests/responses.

    For now I found some small problem with error handling for Accept: application/vnd.api+json as current implementation of ErrorHandleMiddleware checks only for specific application/json content type. And I want to receive JSON formated error for such request. https://github.com/spiral/framework/blob/95deaee7eb403364d0b82acf3fc337fda7c094f0/src/Http/Middleware/ErrorHandlerMiddleware.php#L112

    As well for JSON:API the response type must be set to: application/vnd.api+json. https://github.com/spiral/framework/blob/95deaee7eb403364d0b82acf3fc337fda7c094f0/src/Http/Middleware/ErrorHandlerMiddleware.php#L113

    As a fix for that I want just extend ErrorHandleMiddleware with my own implementation, just override the ErrorHandleMiddleware::renderError method.

    But ErrorHandleMiddleware is a final class so I can't do that. https://github.com/spiral/framework/blob/95deaee7eb403364d0b82acf3fc337fda7c094f0/src/Http/Middleware/ErrorHandlerMiddleware.php#L33

    As well similar problem exists in JsonPayloadMiddleware::isJsonPayload method: https://github.com/spiral/framework/blob/95deaee7eb403364d0b82acf3fc337fda7c094f0/src/Http/Middleware/JsonPayloadMiddleware.php#L50

    Can contribute some code to fix this issues, but first would like to hear your suggestions how you guys want this to be fixed if you want this to be fixed at all on framework level or should I write my own error handling and json payload middleware?

    Improvement Usability 
    opened by R3VoLuT1OneR 8
  • Addeding the ability to specify a custom namespace

    Addeding the ability to specify a custom namespace

    | Q | A | ------------- | --- | Bugfix? | ❌ | Breaks BC? | ❌ | New feature? | ✔️

    Added the ability to specify a custom namespace in the Scaffolder console commands.

    For example:

    php app.php create:bootloader Test --namespace=App\Module\EmptyModule\Application
    

    The bootloader will be created with namespace App\Module\EmptyModule\Application and written into src/Module/EmptyModule/Application/TestBootloader.php (App - is the base namespace for src)

    Feature Component: Scaffolder 
    opened by msmakouz 1
  • [SendIt] add `transportFactories` options MailerConfig

    [SendIt] add `transportFactories` options MailerConfig

    | Q | A | ------------- | --- | Bugfix? | ❌ | Breaks BC? | ❌ | New feature? | ✔️ | Issues | #... | Docs PR | spiral/docs#...

    • Allows to change default transports set
    • Creates configured factories with DI
    • Allows to modify transport config for testing
    opened by gam6itko 1
  • QueueInjector declared but not working

    QueueInjector declared but not working

    Description

    We have two declaration initiators of Spiral\Queue\QueueInterface.

    It created by init method here https://github.com/spiral/framework/blob/2bd757db0d90c0c102e25196770f87f134f1fe23/src/Queue/src/Bootloader/QueueBootloader.php#L52

    ...and by injector here https://github.com/spiral/framework/blob/2bd757db0d90c0c102e25196770f87f134f1fe23/src/Queue/src/Bootloader/QueueBootloader.php#L69

    Seems initQueue method overlaps QueueInjector::createInjection.

    // queue.php
    return [
        'default' => env('QUEUE_CONNECTION', 'roadrunner'),
        'aliases' => [
            'queueRoadrunner' => 'roadrunner',
            'queueSync' => 'sync',
        ],
    ];
    
    # SomeClass 
    
    __construct(
      privete QueueInterface $queueSync
    ){
    // $queueSync is created by QueueBootloader::initQueue method. $queueSync is reference to 'roadrunner' driver
    }
    
    

    How To Reproduce

    Additional Info

    | Q | A | ------------------- | --- | Framework Version | x.y.z | PHP version | x.y.z | Operating system | Linux

    Bug 
    opened by gam6itko 0
  • Files::normalizePath incorrectly normalizing consecutive slashes

    Files::normalizePath incorrectly normalizing consecutive slashes

    Description

    $path = str_replace(['//', '\\'], '/', $path); will normalize UNC path //host/path/resource to complete unusability.

    How To Reproduce

    assert((new \Spiral\Files\Files)->normalizePath('//host/path/resource') === '//host/path/resource');
    

    Additional Info

    The Open Group Base Specifications Issue 7, 2018 edition

    Multiple successive characters are considered to be the same as one , except for the case of exactly two leading characters.

    Bug Component: Files 
    opened by AnrDaemon 0
  • [Feature Request] [Config] Simplify service extending services with other services

    [Feature Request] [Config] Simplify service extending services with other services

    Description

    I'm very new to Spiral and looking how I can make my Spiral Modules extendable. I had a look at the following Config code in the Twig Bridge here:

    https://github.com/spiral/twig-bridge/blob/0463fab97cdbe2caaeaf41f38c197a372660a22b/src/Config/TwigConfig.php#L32-L41

    At the wire part here:

    https://github.com/spiral/twig-bridge/blob/0463fab97cdbe2caaeaf41f38c197a372660a22b/src/Config/TwigConfig.php#L62-L76

    This is something which maybe could be easier as extending a package with something from outside via own is a code is common pattern, which even some design patterns are build on top of it:

    In Symfony service tags can be used to mark services with a tag which will then automatically be injected.

    In Spiral maybe if service tags are not a way to go, I understand that, but maybe the exist code maybe could be moved into a HelperTrait or Helper Function. So that kind of mechanism of that lines could be more simplified and is provided by the Framework and not all need to copy it to there modules.

    Example

    Could the TwigConfig could look like this:

    final class TwigConfig extends InjectableConfig
    {
        public const CONFIG = 'views/twig';
    
        protected array $config = [
            'options' => [],
            'extensions' => [],
            'processors' => [],
        ];
    
        public function getOptions(): array
        {
            return $this->config['options'];
        }
    
        /**
         * @return Autowire[]
         */
        public function getExtensions(): array
        {
            return ServiceHelper::loadServices($this->config['extensions']);
        }
    
        /**
         * @return Autowire[]
         */
        public function getProcessors(): array
        {
            return ServiceHelper::loadServices($this->config['processors']);
        }
    }
    
    Feature 
    opened by alexander-schranz 2
  • [Tokenizer] FatalException During fetch Trait

    [Tokenizer] FatalException During fetch Trait

    Description

    I have a lot of similar messages in Sentry:

    Spiral\Exceptions\Exception\FatalException
    
    During class fetch: Uncaught Spiral\Tokenizer\Exception\LocatorException: Class 'CliTube\Bridge\Spiral\Command\PaginationTrait' can not be loaded in /var/www/vendor/spiral/framework/src/Tokenizer/src/AbstractLocator.php:74
    Stack trace:
    #0 /var/www/app/src/Api/Cli/Command/Query/ListCommand.php(21): Spiral\Tokenizer\AbstractLocator::Spiral\Tokenizer\{closure}('CliTube\\Bridge\\...')
    #1 /var/www/vendor/composer/ClassLoader.php(571): include('/var/www/app/sr...')
    #2 /var/www/vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile('/var/www/vendor...')
    #3 [internal function]: Composer\Autoload\ClassLoader->loadClass('App\\Api\\Cli\\Com...')
    #4 /var/www/vendor/spiral/framework/src/Tokenizer/src/AbstractLocator.php(83): ReflectionClass->__construct('App\\Api\\Cli\\Com...')
    #5 /var/www/vendor/spiral/framework/src/Tokenizer/src/ClassLocator.php(25): Spiral\Tokenizer\AbstractLocator->classReflection('App\\Api\\Cli\\Com...')
    #6 /var/www/vendor/spiral/framework/src/Tokenizer/src/Bootloader/TokenizerListenerBootloader.php(37): Spiral\Tokenizer\ClassLocator->getClasses()
    #7 [internal function]: Spiral\Tokenizer\Bootloader\TokenizerListenerBootloader->Spiral\Tokenizer\Bootloader\{closure}(Object(Spiral\Tokenizer\ClassLocator))
    #8 /var/www/vendor/spiral/framework/src/Core/src/Internal/Invoker.php(73): ReflectionFunction->invokeArgs(Array)
    #9 /var/www/vendor/spiral/framework/src/Core/src/Container.php(210): Spiral\Core\Internal\Invoker->invoke(Object(Closure), Array)
    #10 /var/www/vendor/spiral/framework/src/Boot/src/AbstractKernel.php(299): Spiral\Core\Container->invoke(Object(Closure))
    #11 /var/www/vendor/spiral/framework/src/Boot/src/AbstractKernel.php(154): Spiral\Boot\AbstractKernel->fireCallbacks(Array)
    #12 /var/www/vendor/spiral/framework/src/Core/src/ContainerScope.php(37): Spiral\Boot\AbstractKernel->Spiral\Boot\{closure}()
    #13 /var/www/vendor/spiral/framework/src/Core/src/Container.php(158): Spiral\Core\ContainerScope::runScope(Object(Spiral\Core\Container), Object(Closure))
    #14 /var/www/vendor/spiral/framework/src/Boot/src/AbstractKernel.php(155): Spiral\Core\Container->runScope(Array, Object(Closure))
    #15 /var/www/app.php(23): Spiral\Boot\AbstractKernel->run()
    #16 {main}
    
    

    How To Reproduce

    Create console command with the trait https://github.com/clitube/bridge-spiral/blob/master/src/Command/PaginationTrait.php Run tokenizer

    Additional Info

    | Q | A | ------------------- | --- | Framework Version | 3.1.0 | PHP version | 8.1 | Operating system | Linux

    Bug 
    opened by roxblnfk 0
Releases(3.5.0)
  • 3.5.0(Dec 23, 2022)

    What's Changed

    • Improved the exception trace output for both the plain and console renderers to provide more detailed information about previous exceptions. by @butschster in https://github.com/spiral/framework/pull/853
    • Added named route patterns registry Spiral\Router\Registry\RoutePatternRegistryInterface to allow for easier management of route patterns. by @kastahov in https://github.com/spiral/framework/pull/847
    • Made the Verbosity enum injectable to allow for easier customization and management of verbosity levels from env variable VERBOSITY_LEVEL. by @kastahov in https://github.com/spiral/framework/pull/846
    • Deprecated Kernel constants and add new function defineSystemBootloaders to allow for more flexibility in defining system bootloaders. by @kastahov in https://github.com/spiral/framework/pull/845

    Full Changelog: https://github.com/spiral/framework/compare/3.4.0...3.5.0

    Source code(tar.gz)
    Source code(zip)
  • 3.4.0(Dec 8, 2022)

    What's Changed

    • Medium Impact Changes
      • [spiral/boot] Class Spiral\Boot\BootloadManager\BootloadManager is deprecated. Will be removed in version v4.0. https://github.com/spiral/framework/pull/840
      • [spiral/stempler] Adds null locale processor to remove brackets [[ ... ]] when don't use Translator component by @butschster in https://github.com/spiral/framework/pull/843
    • Other Features
      • [spiral/session] Added session handle with cache driver by @kastahov in https://github.com/spiral/framework/pull/835
      • [spiral/router] Added routes with PATCH method into route:list command by @gam6itko in https://github.com/spiral/framework/pull/839
      • [spiral/boot] Added Spiral\Boot\BootloadManager\InitializerInterface. This will allow changing the implementation of this interface by the developer by @msmakouz https://github.com/spiral/framework/pull/840
      • [spiral/boot] Added Spiral\Boot\BootloadManager\StrategyBasedBootloadManager. It allows the implementation of a custom bootloaders loading strategy by @msmakouz https://github.com/spiral/framework/pull/840
      • [spiral/boot] Added the ability to register application bootloaders via object instance or anonymous object.
      • [spiral/boot] Removed final from the Spiral\Boot\BootloadManager\Initializer class by @msmakouz https://github.com/spiral/framework/pull/840
    • Bug Fixes
      • [spiral/views] Fixes problem with using view context with default value by @butschster in https://github.com/spiral/framework/pull/842
      • [spiral/queue] Added Spiral\Telemetry\Bootloader\TelemetryBootloader dependency to QueueBootloader by @butschster in https://github.com/spiral/framework/pull/837
      • [spiral/core] (PHP 8.2 support) Fixed problem with dynamic properties in Spiral\Core\Container by @msmakouz in https://github.com/spiral/framework/pull/844

    Full Changelog: https://github.com/spiral/framework/compare/3.3.0...3.4.0

    Source code(tar.gz)
    Source code(zip)
  • 3.3.0(Nov 17, 2022)

    What's Changed

    • New [spiral/telemetry] component and spiral/otel-bridge by @butschster in https://github.com/spiral/framework/pull/816
    • Added Spiral\Auth\Middleware\Firewall\RedirectFirewall by @msmakouz in https://github.com/spiral/framework/pull/827
    • Created TokenStorageProvider to able manage token storages by @kastahov in https://github.com/spiral/framework/pull/826
    • Fixed error suppressing in the Spiral\Http\Middleware\ErrorHandlerMiddleware by @msmakouz in https://github.com/spiral/framework/pull/833
    • Router improvements by @msmakouz in https://github.com/spiral/framework/pull/831
    • Changed where Tokenizer listener events are called by @msmakouz in https://github.com/spiral/framework/pull/825

    New Contributors

    • @kastahov made their first contribution in https://github.com/spiral/framework/pull/826
    • @alexander-schranz made their first contribution in https://github.com/spiral/framework/pull/832

    Full Changelog: https://github.com/spiral/framework/compare/3.2.0...3.3.0

    Source code(tar.gz)
    Source code(zip)
  • 3.2.0(Oct 21, 2022)

    What's Changed

    • Adding context in the Queue by @msmakouz in https://github.com/spiral/framework/pull/808
    • Fixing RR mode checking by @msmakouz in https://github.com/spiral/framework/pull/819
    • CoreHandler do not mention internal errors in ClientException by @gam6itko in https://github.com/spiral/framework/pull/813
    • Adding Events interceptors by @msmakouz in https://github.com/spiral/framework/pull/820
    • Adding new options in the Queue by @msmakouz in https://github.com/spiral/framework/pull/814
    • Adding container to scope callback by @msmakouz in https://github.com/spiral/framework/pull/821
    • Improving ContainerException message by @msmakouz in https://github.com/spiral/framework/pull/817
    • Fixes problem with using push interceptors in Queue component by @butschster in https://github.com/spiral/framework/pull/823

    Full Changelog: https://github.com/spiral/framework/compare/3.1.0...3.2.0

    Source code(tar.gz)
    Source code(zip)
  • 3.1.0(Sep 29, 2022)

    What's Changed

    Features

    • Added the ability to configure default validator by @msmakouz in https://github.com/spiral/framework/pull/805
    • Added ValidationHandlerMiddleware for handling filter validation exception. by @butschster in https://github.com/spiral/framework/pull/803

    Bugfixes

    • Removed readonly from Spiral\Stempler\Transform\Import\Bundle by @msmakouz in https://github.com/spiral/framework/pull/800
    • Fixed the problem with parsing a pattern by @butschster in https://github.com/spiral/framework/pull/802
    • Fixed phpdoc for AuthorizationStatus::$topics property by @butschster in https://github.com/spiral/framework/pull/804
    • Fixed symfony/console version by @msmakouz in https://github.com/spiral/framework/pull/795
    • Fixed Psalm in ValidationProvider by @msmakouz in https://github.com/spiral/framework/pull/794
    • Fixes psalm issues and composer dependencies by @butschster in https://github.com/spiral/framework/pull/796

    Full Changelog: https://github.com/spiral/framework/compare/3.0.0...3.1.0

    Source code(tar.gz)
    Source code(zip)
  • 3.0.2(Sep 29, 2022)

    What's Changed

    • Fixed psalm issues and composer dependencies by @butschster in https://github.com/spiral/framework/pull/796
    • Moved ClassesInterface into a callback function by @msmakouz in https://github.com/spiral/framework/pull/797
    • Removed readonly from Spiral\Stempler\Transform\Import\Bundle by @msmakouz in https://github.com/spiral/framework/pull/800
    • Fixed Filter with Input attribute by @msmakouz in https://github.com/spiral/framework/pull/801
    • Fixed the problem with parsing a pattern by @butschster in https://github.com/spiral/framework/pull/802
    • Fixed phpdoc for AuthorizationStatus::$topics property by @butschster in https://github.com/spiral/framework/pull/804

    Full Changelog: https://github.com/spiral/framework/compare/3.0.0...3.0.2

    Source code(tar.gz)
    Source code(zip)
  • 3.0.0(Sep 13, 2022)

    What's Changed

    • Increased min PHP version up to 8.1 by @msmakouz in https://github.com/spiral/framework/pull/595
    • [spiral/data-grid] moved into a standalone package by @msmakouz in https://github.com/spiral/framework/pull/655
    • New error handler by @roxblnfk in https://github.com/spiral/framework/pull/659
    • [spiral/boot] Disabled overwriting of env variables by @msmakouz in https://github.com/spiral/framework/pull/664
    • Nyholm Psr17Factory used by default in the framework by @msmakouz in https://github.com/spiral/framework/pull/667
    • [spiral/http] SAPI moved to standalone package sapi-bridge by @msmakouz in https://github.com/spiral/framework/pull/666
    • [spiral/monolog-bridge] Added the ability to configure the default channel by @msmakouz in https://github.com/spiral/framework/pull/675
    • [spiral/boot] Added automatic booting of bootloaders in the init and boot methods by @msmakouz in https://github.com/spiral/framework/pull/672
    • [spiral/filters] Added method Spiral\Filters\InputInterface::hasValue() by @only-viktor in https://github.com/spiral/framework/pull/470
    • [spiral/dumper] Removed component by @roxblnfk in https://github.com/spiral/framework/pull/679
    • [spiral/boot] Renamed starting/started into booting/booted methods by @msmakouz in https://github.com/spiral/framework/pull/686
    • [spiral/core] Refactored the container by @roxblnfk in https://github.com/spiral/framework/pull/670
    • [spiral/core] The container made replaceable in the App by @roxblnfk in https://github.com/spiral/framework/pull/689
    • [spiral/filters] Refactored component by @butschster in https://github.com/spiral/framework/pull/663
    • [spiral/console] Refactored component by @butschster in https://github.com/spiral/framework/pull/685
    • [spiral/core] Added typization for $config property in Spiral\Core\InjectableConfig by @msmakouz in https://github.com/spiral/framework/pull/694
    • [spiral/boot] Added Spiral\Boot\Injector\EnumInjector for enums by @butschster in https://github.com/spiral/framework/pull/693
    • [spiral/http] Added the ability to add input bags by @msmakouz in https://github.com/spiral/framework/pull/698
    • [spiral/attributes] component moved into a standalone package by @msmakouz in https://github.com/spiral/framework/pull/699
    • [spiral/scaffolder] Added the ability to override the base namespace by @msmakouz in https://github.com/spiral/framework/pull/705
    • Replaced laminas/diactoros to nyholm/psr7 by @msmakouz in https://github.com/spiral/framework/pull/704
    • [spiral/boot] Added callbacks appBooting and appBooted for App bootloaders by @msmakouz in https://github.com/spiral/framework/pull/703
    • [spiral/monolog-bridge] Fixed the problem with finalizing monolog logger during application destruction. by @butschster in https://github.com/spiral/framework/pull/710
    • Removed bin/spiral by @msmakouz in https://github.com/spiral/framework/pull/714
    • [spiral/router] Refactored component by @msmakouz in https://github.com/spiral/framework/pull/709
    • [spiral/console] Added ApplicationInProduction confirmation class for console commands by @butschster in https://github.com/spiral/framework/pull/713
    • [spiral/exceptions] Added LoggerReporter by @msmakouz in https://github.com/spiral/framework/pull/716
    • [spiral/serializer] Added Serializer component with interface and simple implementation by @msmakouz in https://github.com/spiral/framework/pull/712
    • [spiral/auth] Added AuthTransportMiddleware by @msmakouz in https://github.com/spiral/framework/pull/717
    • [spiral/boot] Added a new callback running for Kernel class by @butschster in https://github.com/spiral/framework/pull/720
    • Replaced $env->get('DEBUG') with $debugMode->isEnabled() by @msmakouz in https://github.com/spiral/framework/pull/722
    • [spiral/queue] Removed method pushCallable by @msmakouz in https://github.com/spiral/framework/pull/723
    • [spiral/router] Added the ability to register middleware via Autowire by @msmakouz in https://github.com/spiral/framework/pull/726
    • [spiral/exceptions] Improved Spiral\Http\ErrorHandler\RendererInterface class. by @butschster in https://github.com/spiral/framework/pull/727
    • [spiral/router] Improved route group middleware by @butschster in https://github.com/spiral/framework/pull/730
    • [spiral/core] Added the ability to check if class or interface has registered injector by @butschster in https://github.com/spiral/framework/pull/734
    • [spiral/console] Added interceptors for Console command by @butschster in https://github.com/spiral/framework/pull/732
    • [spiral/queue] Removed opis/closure by @msmakouz in https://github.com/spiral/framework/pull/744
    • [spiral/serializer] Changing folder name from Dto to Model in Filters by @msmakouz in https://github.com/spiral/framework/pull/746
    • [spiral/views] Added the ability to register template global variables by @butschster in https://github.com/spiral/framework/pull/742
    • [spiral/queue] Added the ability to configure serializers for different types of jobs by @msmakouz in https://github.com/spiral/framework/pull/749
    • [spiral/queue] Added interceptors for consumers by @butschster in https://github.com/spiral/framework/pull/739
    • [spiral/tokenizer] Added ext-tokenizer dependency to composer requirements by @butschster in https://github.com/spiral/framework/pull/762
    • [spiral/boot] Preventing bootload abstract bootloaders by @msmakouz in https://github.com/spiral/framework/pull/766
    • psalm level increased up to 4 by @roxblnfk and @butschster in https://github.com/spiral/framework/pull/764
    • [spiral/http] Fixed default behaviour for InputBag when it checks key with null value by @butschster in https://github.com/spiral/framework/pull/770
    • [spiral/queue] Added defaultSerializer in queue config by @msmakouz in https://github.com/spiral/framework/pull/768
    • [spiral/sendit] Added the ability to use custom transports for Symfony Mailer by @butschster in https://github.com/spiral/framework/pull/774
    • [spiral/events] Added PSR-14 Event dispatcher by @butschster and @msmakouz in https://github.com/spiral/framework/pull/769
    • [spiral/tokenizer] Added tokenizer listeners by @butschster in https://github.com/spiral/framework/pull/763
    • [spiral/exceptions] Added FileReporter by @msmakouz in https://github.com/spiral/framework/pull/779
    • Use container interfaces instead of container class into by @butschster in https://github.com/spiral/framework/pull/780
    • [spiral/boot] Added the ability to use custom bootload manager by @butschster in https://github.com/spiral/framework/pull/781
    • [spiral/events] Use tokenizer listeners for registering event dispatcher listeners via attributes. by @butschster in https://github.com/spiral/framework/pull/785
    • [spiral/router] Fixed problem with subdomain patterns. by @butschster in https://github.com/spiral/framework/pull/786

    Full Changelog: https://github.com/spiral/framework/compare/2.11.0...3.0.0

    Source code(tar.gz)
    Source code(zip)
  • 2.14.1(Sep 12, 2022)

    What's Changed

    • Adds deprecation for LogFactory DEFAULT const by @butschster in https://github.com/spiral/framework/pull/782

    Full Changelog: https://github.com/spiral/framework/compare/2.14.0...2.14.1

    Source code(tar.gz)
    Source code(zip)
  • 2.14.0(Sep 1, 2022)

    What's Changed

    • [feature] Adding SerializerRegistry and ability to define job serializers by @msmakouz in https://github.com/spiral/framework/pull/753
    • [feature] Changing private to protected in non-final classes by @msmakouz in https://github.com/spiral/framework/pull/758
    • [feature] Self-rendering filters by @kafkiansky in https://github.com/spiral/framework/pull/737
    • [hotfix] Adding key to console sequences by @msmakouz in https://github.com/spiral/framework/pull/745
    • [hotfix] Fixes problem with passing value via withValue method by @butschster in https://github.com/spiral/framework/pull/750
    • [hotfix] Adding nullable to Buffer offset by @msmakouz in https://github.com/spiral/framework/pull/754
    • [hotfix] Align arguments resolving in NamedArgumentsInstantiator with native PHP 8 behavior. by @donquixote in https://github.com/spiral/framework/pull/459

    New Contributors

    • @donquixote made their first contribution in https://github.com/spiral/framework/pull/459
    • @kafkiansky made their first contribution in https://github.com/spiral/framework/pull/737

    Full Changelog: https://github.com/spiral/framework/compare/2.13.1...2.14.0

    Source code(tar.gz)
    Source code(zip)
  • v3.0-rc(Aug 4, 2022)

    What's Changed

    • Adds a new callback for Kernel class by @butschster in https://github.com/spiral/framework/pull/720
    • Adding methods to the RouteConfigurator by @msmakouz in https://github.com/spiral/framework/pull/721
    • Changing $env->get('DEBUG') to $debugMode->isEnabled() by @msmakouz in https://github.com/spiral/framework/pull/722
    • Removing method pushCallable by @msmakouz in https://github.com/spiral/framework/pull/723
    • Loading env variables only in callback by @msmakouz in https://github.com/spiral/framework/pull/724
    • Fixes problem with replacing route middleware with group middleware when a route adds to a group. by @butschster in https://github.com/spiral/framework/pull/725
    • Adding middlewares via Autowire by @msmakouz in https://github.com/spiral/framework/pull/726
    • Improves Spiral\Http\ErrorHandler\RendererInterface class. by @butschster in https://github.com/spiral/framework/pull/727
    • Improves route group middleware by @butschster in https://github.com/spiral/framework/pull/730
    • Extend the spiral/attributes requirement version by @roxblnfk in https://github.com/spiral/framework/pull/731
    • Adds ability to check if class or interface has registered injector by @butschster in https://github.com/spiral/framework/pull/734
    • Adds tests for bootloaders by @butschster in https://github.com/spiral/framework/pull/735
    • Console command refactoring by @butschster in https://github.com/spiral/framework/pull/732
    • Removing opis/closure by @msmakouz in https://github.com/spiral/framework/pull/744
    • Moving adding transports to booting callback by @msmakouz in https://github.com/spiral/framework/pull/747
    • Adds global variables for views by @butschster in https://github.com/spiral/framework/pull/742
    • Adding key to console sequences by @msmakouz in https://github.com/spiral/framework/pull/748
    • Adding the ability to configure serializers for different types of jobs by @msmakouz in https://github.com/spiral/framework/pull/749
    • Adds queue interceptors for consumers and pushed jobs by @msmakouz in https://github.com/spiral/framework/pull/739

    Full Changelog: https://github.com/spiral/framework/compare/v3.0-beta...v3.0-rc

    Source code(tar.gz)
    Source code(zip)
  • v3.0-beta(Jun 16, 2022)

    What's Changed

    • Adding callbacks for App bootloaders by @msmakouz in https://github.com/spiral/framework/pull/703
    • Fixes problem with finalizing monolog logger during application destruction. by @butschster in https://github.com/spiral/framework/pull/710
    • Improving Printer in Reactor by @msmakouz in https://github.com/spiral/framework/pull/700
    • Moving Attributes to a standalone package by @msmakouz in https://github.com/spiral/framework/pull/699
    • Fix nullable parameter resolving when object creation is failing by @roxblnfk in https://github.com/spiral/framework/pull/702
    • Replacing laminas/diactoros with nyholm/psr7 in tests by @msmakouz in https://github.com/spiral/framework/pull/704
    • Framework tests refactoring. by @butschster in https://github.com/spiral/framework/pull/707
    • Router improvements by @msmakouz in https://github.com/spiral/framework/pull/709
    • Adds ApplicationInProduction confirmation class for console commands by @butschster in https://github.com/spiral/framework/pull/713
    • Adding LoggerReporter by @msmakouz in https://github.com/spiral/framework/pull/716
    • Adding Serializer component with interface and simple implementation by @msmakouz in https://github.com/spiral/framework/pull/712
    • Adding AuthTransportMiddleware by @msmakouz in https://github.com/spiral/framework/pull/717
    • Removing Filter declatarion in Scaffolder by @msmakouz in https://github.com/spiral/framework/pull/718
    • Added check before adding postfix in Scaffolder by @msmakouz in https://github.com/spiral/framework/pull/719

    Full Changelog: https://github.com/spiral/framework/compare/v3.0-alpha2...v3.0-beta

    Source code(tar.gz)
    Source code(zip)
  • v3.0-alpha2(May 26, 2022)

    What's Changed

    • Fixes problem with adding new sequences by @butschster in https://github.com/spiral/framework/pull/691
    • Reactor with supporting PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/688
    • Fix FatalError on finalizing with container by @roxblnfk in https://github.com/spiral/framework/pull/692
    • Adding typization to $config property by @msmakouz in https://github.com/spiral/framework/pull/694
    • Adds helper for named route url generation by @butschster in https://github.com/spiral/framework/pull/695
    • Adds EnumInjector for enums by @butschster in https://github.com/spiral/framework/pull/693
    • Container refactoring by @roxblnfk in https://github.com/spiral/framework/pull/697
    • Adding the ability to add input bags by @msmakouz in https://github.com/spiral/framework/pull/698
    • Improving version checker in MonorepoBuilder by @msmakouz in https://github.com/spiral/framework/pull/696

    Full Changelog: https://github.com/spiral/framework/compare/v3.0-alpha...v3.0-alpha2

    Source code(tar.gz)
    Source code(zip)
  • v3.0-alpha(May 17, 2022)

    What's Changed

    • Increasing min PHP version to 8.1 by @msmakouz in https://github.com/spiral/framework/pull/595
    • Removing deprecated code by @msmakouz in https://github.com/spiral/framework/pull/597
    • Updating Filters code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/603
    • Moving config JsonPayloadConfig by @msmakouz in https://github.com/spiral/framework/pull/605
    • Updating Validation code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/604
    • Updating AnnotatedRoutes code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/606
    • Updating Attributes code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/607
    • Updating Auth code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/608
    • Updating AuthHttp code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/609
    • Updating Exceptions, Files code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/626
    • Updating Monolog bridge code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/612
    • Updating Console code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/616
    • Updating Cookies code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/617
    • Updating Stempler bridge code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/613
    • Updating Cache code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/614
    • Updating Dotenv bridge code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/611
    • Updating Debug code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/621
    • Updating Boot code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/610
    • Updating Core code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/618
    • Updating Config code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/615
    • Updating HTTP code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/629
    • Updating CSRF code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/619
    • Updating Streams code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/646
    • Updating DataGrid code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/620
    • Updating Distribution code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/622
    • Updating Dumper code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/623
    • Updating Encrypter code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/624
    • Updating Framework code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/627
    • Updating HMVC code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/628
    • Updating Logger code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/630
    • Updating Mailer code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/631
    • Updating Models code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/632
    • Updating Pagination code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/633
    • Updating Prototype code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/634
    • Updating Queue code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/635
    • Updating Session code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/636
    • Updating Snapshots code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/637
    • Updating Reactor code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/638
    • Updating Router code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/639
    • Updating Scaffolder code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/640
    • Updating Security code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/642
    • Updating SendIt code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/643
    • Updating Stempler code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/644
    • Updating Storage code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/645
    • Updating Translator code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/648
    • Updating Tokenizer code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/647
    • Updating Views code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/649
    • Changing Bootloaders place by @msmakouz in https://github.com/spiral/framework/pull/652
    • Removing DataGrid by @msmakouz in https://github.com/spiral/framework/pull/655
    • Merging v2.12 into v3.0-dev by @msmakouz in https://github.com/spiral/framework/pull/658
    • New error handler by @roxblnfk in https://github.com/spiral/framework/pull/659
    • Disabling overwriting of env variables by @msmakouz in https://github.com/spiral/framework/pull/664
    • Adding Nyholm Psr17Factory instead of our implementation by @msmakouz in https://github.com/spiral/framework/pull/667
    • Moving SAPI to standalone package by @msmakouz in https://github.com/spiral/framework/pull/666
    • Adding null by default, to prevent an uninitialized property error by @msmakouz in https://github.com/spiral/framework/pull/671
    • Adding the ability to configure the default channel by @msmakouz in https://github.com/spiral/framework/pull/675
    • Adding automatic booting of bootloaders in the init and boot methods by @msmakouz in https://github.com/spiral/framework/pull/672
    • add method Spiral\Filters\InputInterface::hasValue() by @only-viktor in https://github.com/spiral/framework/pull/470
    • Merging v2.13 into v3.0-dev by @msmakouz in https://github.com/spiral/framework/pull/677
    • Removes dumper component by @roxblnfk in https://github.com/spiral/framework/pull/679
    • Removing polyfills by @msmakouz in https://github.com/spiral/framework/pull/681
    • Updating Broadcasting code with PHP 8.1 features by @msmakouz in https://github.com/spiral/framework/pull/680
    • Renaming starting/started methods by @msmakouz in https://github.com/spiral/framework/pull/686
    • Container refactoring by @roxblnfk in https://github.com/spiral/framework/pull/670
    • Make container replaceable in the App by @roxblnfk in https://github.com/spiral/framework/pull/689
    • Filters refactoring by @butschster in https://github.com/spiral/framework/pull/663
    • Feature/console refactoring by @butschster in https://github.com/spiral/framework/pull/685

    Full Changelog: https://github.com/spiral/framework/compare/2.11.0...v3.0-alpha

    Source code(tar.gz)
    Source code(zip)
  • 2.13.0(Apr 29, 2022)

    What's Changed

    • Added chunkSize option to the HTTP config by @msmakouz in https://github.com/spiral/framework/pull/661
    • Added broadcasting component by @butschster in https://github.com/spiral/framework/pull/660
    • Deprecated SAPI by @msmakouz in https://github.com/spiral/framework/pull/669
    • Added Queueable attribute by @msmakouz in https://github.com/spiral/framework/pull/662
    • Deprecated dumper component by @roxblnfk in https://github.com/spiral/framework/pull/673

    Full Changelog: https://github.com/spiral/framework/compare/2.12.0...2.13.0

    Source code(tar.gz)
    Source code(zip)
  • 2.12.0(Apr 7, 2022)

    What's Changed

    • Added support for HTTP Streaming output for SapiEmitter by @roxblnfk in https://github.com/spiral/framework/pull/602
    • Added support for generators as a return type for controller actions. Every yield will be sent as a stream chunk. By @roxblnfk in https://github.com/spiral/framework/pull/625
    • Updated psr/log dependency version by @roxblnfk in https://github.com/spiral/framework/pull/654
    • Using self.version instead of * by @msmakouz in https://github.com/spiral/framework/pull/653
    • Marking deprecated code by @msmakouz in https://github.com/spiral/framework/pull/641

    Full Changelog: https://github.com/spiral/framework/compare/2.11.0...2.12.0

    Source code(tar.gz)
    Source code(zip)
  • 2.11.0(Mar 18, 2022)

    What's Changed

    • Add queue injector by @roxblnfk in https://github.com/spiral/framework/pull/592
    • Adding return types for interface compatible by @msmakouz in https://github.com/spiral/framework/pull/591
    • Add cache injector by @roxblnfk in https://github.com/spiral/framework/pull/600
    • Adds an ability to disable overwriting env variables for Environment.php by @butschster in https://github.com/spiral/framework/pull/599
    • Added ability to use scopes for indexing files with specific scopes by @butschster in https://github.com/spiral/framework/pull/593
    • Adds storage bucket factory by @butschster in https://github.com/spiral/framework/pull/601

    Full Changelog: https://github.com/spiral/framework/compare/2.10.0...2.11.0

    Source code(tar.gz)
    Source code(zip)
  • 2.10.1(Mar 4, 2022)

    • [spiral/console] Fixed compatibility with symfony/console 6.x

    Full Changelog: https://github.com/spiral/framework/compare/2.10.0...2.10.1

    Source code(tar.gz)
    Source code(zip)
  • 2.10.0(Mar 3, 2022)

    What's Changed

    • upd(deps): update RR version in go.mod by @rustatian in https://github.com/spiral/framework/pull/530
    • Adding Cache and Queue to the Prototype by @msmakouz in https://github.com/spiral/framework/pull/548
    • Upping minimal PHP version to 7.4 by @msmakouz in https://github.com/spiral/framework/pull/549
    • Adding ability to configure Scaffolder declarations by @msmakouz in https://github.com/spiral/framework/pull/539
    • Removing final from Spiral\Mailer\Message class by @msmakouz in https://github.com/spiral/framework/pull/558
    • Fixes problem with undefined constant "Spiral\Boot\STDERR" in ExceptionHandler by @butschster in https://github.com/spiral/framework/pull/562
    • Wrapping a value, casted to a string by @msmakouz in https://github.com/spiral/framework/pull/566
    • Adds ability to set delay for Mailer messages by @butschster in https://github.com/spiral/framework/pull/547
    • Add error message for not exist Bootloader class by @butschster in https://github.com/spiral/framework/pull/576
    • Adds null driver for [spiral/queue] by @butschster in https://github.com/spiral/framework/pull/578
    • Sync branches by @butschster in https://github.com/spiral/framework/pull/577
    • class annotations for traits by @aquaminer in https://github.com/spiral/framework/pull/559
    • Adds session factory interface by @butschster in https://github.com/spiral/framework/pull/581
    • Fixed problem with downloading RoadRunner 1.x by @butschster in https://github.com/spiral/framework/pull/586
    • Add finalizer for Monolog to prevent memory leaks. by @butschster in https://github.com/spiral/framework/pull/584
    • Add Symfony 6 support by @wakebit in https://github.com/spiral/framework/pull/585
    • AliasTrait circle reference protection by @gam6itko in https://github.com/spiral/framework/pull/588
    • Monorepo builder upgrade by @wakebit in https://github.com/spiral/framework/pull/589

    New Contributors

    • @aquaminer made their first contribution in https://github.com/spiral/framework/pull/559
    • @wakebit made their first contribution in https://github.com/spiral/framework/pull/585

    Full Changelog: https://github.com/spiral/framework/compare/2.9.1...2.10.0

    Source code(tar.gz)
    Source code(zip)
  • 2.9.1(Feb 11, 2022)

    What's Changed

    • Adds autowiring for Kernel callback functions starting and started by @butschster in https://github.com/spiral/framework/pull/540
    • Fixes problem with error Undefined class or binding 'Spiral\Boot\EnvironmentInterface by @butschster in https://github.com/spiral/framework/pull/545
    • Fixes problem with Class "Composer\InstalledVersions" not found by @butschster in https://github.com/spiral/framework/pull/546
    • Casting SNAPSHOT_MAX_FILES and SNAPSHOT_VERBOSITY to int in SnapshotsBootloader by @msmakouz in https://github.com/spiral/framework/pull/541
    • Fixes framework components dependencies in composer.json by @butschster in https://github.com/spiral/framework/pull/561
    • Fixes problem with undefined constant Spiral\Boot\STDERR in ExceptionHandler by @butschster in https://github.com/spiral/framework/pull/562
    • Moving RouteGroup from AnnotatedRoutes component to Router component by @msmakouz in https://github.com/spiral/framework/pull/557
    • Gets rid of [spiral/sendit] dependency from [spiral/queue] by @butschster in https://github.com/spiral/framework/pull/563
    • Added config param queue to the SendIt by @msmakouz in https://github.com/spiral/framework/pull/556
    • Fixed: PHP Deprecated: htmlspecialchars(): Passing null to parameter [PHP8.1] by @msmakouz in https://github.com/spiral/framework/pull/565

    Full Changelog: https://github.com/spiral/framework/compare/2.9.0...2.9.1

    Source code(tar.gz)
    Source code(zip)
  • 2.9.0(Feb 3, 2022)

    The release added support for RoadRunner v2.

    New packages

    What's Changed

    • [spiral/core] Added autocomplete for get and make methods #516
    • [spiral/core] Added a new method invoke for invoking callables with auto-wiring. You can use Spiral\Core\InvokerInterface for callables also.
    • [Rector] Cleaned up code by rector #472
    • Adds support PHP8.1 for Dotenv bridge by @butschster in #476
    • Replaces [spiral/database] package with [cycle/database] by @butschster in #479
    • Upping min version of Cycle ORM up to 1.8.1 by @msmakouz in #487
    • Adding attributes, marking as deprecated Annotations package by @msmakouz in #486
    • Added support for RoadRunner v2 by @butschster in #491
    • Allow injectors to inject interfaces by @vladgorenkin in #444
    • Allows using custom loaders in ViewManager by @butschster in #495
    • Changed psr/container version to 1 - 2 by @roxblnfk in #499
    • Marked deprecated code, which will be moved to spiral/cycle-bridge package by @msmakouz in #497
    • Added [spiral/queue] component with sync driver out of the box by @butschster in #501
    • Added [spiral/cache] component with PSR-16 compatible drivers and array and file driver out of the box by @butschster
    • Improved bootstrapping kernel bootloaders by @butschster in #505
    • Added ability to configure Monolog processors by @msmakouz in #506
    • Added ability to use mailer without queueing by @butschster in #514
    • Fix container: wrong nullable parameter type assertion by @roxblnfk in #523
    • Set the lowest priority for ConsoleDispatcher and SapiDispatcher dispatchers by @butschster in #527
    • Improved PHP8.1 support
    • More psalm annotations coverage

    Spiral Framework project: https://github.com/orgs/spiral/projects/5

    Full Changelog: https://github.com/spiral/framework/compare/v2.8.13...2.9.0

    Thank you to all for issues and pull requests!

    Source code(tar.gz)
    Source code(zip)
    spiral-2.9.0-darwin-amd64.zip(12.12 MB)
    spiral-2.9.0-darwin-arm64.zip(11.66 MB)
    spiral-2.9.0-freebsd-amd64.zip(6.66 MB)
    spiral-2.9.0-linux-amd64.tar.gz(6.58 MB)
    spiral-2.9.0-linux-arm64.tar.gz(6.05 MB)
    spiral-2.9.0-unknown-musl-amd64.zip(6.60 MB)
    spiral-2.9.0-windows-amd64.zip(6.66 MB)
  • v2.8.13(Sep 27, 2021)

  • v2.8.12(Sep 16, 2021)

  • v2.8.11(Aug 24, 2021)

  • v2.8.10(Aug 17, 2021)

  • v2.8.9(Jul 5, 2021)

  • v2.8.8(Jun 29, 2021)

  • v2.8.7(Jun 24, 2021)

  • v2.8.6(Jun 24, 2021)

  • v2.8.5(Jun 23, 2021)

  • v2.8.4(Jun 23, 2021)

Owner
Spiral Scout
Spiral Scout is a full-service digital agency, providing design, development and online marketing services to businesses around San Francisco and beyond.
Spiral Scout
Spiral Framework is a High-Performance PHP/Go Full-Stack framework and group of over sixty PSR-compatible components

Spiral HTTP Application Skeleton Spiral Framework is a High-Performance PHP/Go Full-Stack framework and group of over sixty PSR-compatible components.

Spiral Scout 152 Dec 18, 2022
💾 High-performance PHP application server, load-balancer and process manager written in Golang. RR2 releases repository.

RoadRunner is an open-source (MIT licensed) high-performance PHP application server, load balancer, and process manager. It supports running as a serv

Spiral Scout 45 Nov 29, 2022
🤯 High-performance PHP application server, load-balancer and process manager written in Golang

RoadRunner is an open-source (MIT licensed) high-performance PHP application server, load balancer, and process manager. It supports running as a serv

Spiral Scout 6.9k Jan 3, 2023
This package provides a high performance HTTP server to speed up your Laravel/Lumen application based on Swoole.

This package provides a high performance HTTP server to speed up your Laravel/Lumen application based on Swoole.

Swoole Taiwan 3.9k Jan 8, 2023
High performance, full-stack PHP framework delivered as a C extension.

Phalcon Framework Phalcon is an open source web framework delivered as a C extension for the PHP language providing high performance and lower resourc

The Phalcon PHP Framework 10.7k Jan 8, 2023
Biny is a tiny, high-performance PHP framework for web applications

Biny is high performance. Framework comes default with response time of less than 1ms. Stand-alone QPS easily up to 3000.

Tencent 1.7k Dec 9, 2022
High performance HTTP Service Framework for PHP based on Workerman.

webman High performance HTTP Service Framework for PHP based on Workerman. Manual https://www.workerman.net/doc/webman Benchmarks https://www.techempo

walkor 1.3k Jan 2, 2023
🔥High Performance PHP Progressive Framework.

The Core Framework English | 中文 The QueryPHP Application QueryPHP is a modern, high performance PHP progressive framework, to provide a stable and rel

The QueryPHP Framework 306 Dec 14, 2022
Kit is a lightweight, high-performance and event-driven web services framework that provides core components such as config, container, http, log and route.

Kit What is it Kit is a lightweight, high-performance and event-driven web services framework that provides core components such as config, container,

null 2 Sep 23, 2022
:gem: Go! AOP PHP - modern aspect-oriented framework for the new level of software development

Go! Aspect-Oriented Framework for PHP Go! AOP is a modern aspect-oriented framework in plain PHP with rich features for the new level of software deve

Go! Aspect-Oriented Framework 1.6k Dec 29, 2022
PHPLucidFrame (a.k.a LucidFrame) is an application development framework for PHP developers

PHPLucidFrame (a.k.a LucidFrame) is an application development framework for PHP developers. It provides logical structure and several helper utilities for web application development. It uses a functional architecture to simplify complex application development. It is especially designed for PHP, MySQL and Apache. It is simple, fast, lightweight and easy to install.

PHPLucidFrame 19 Apr 25, 2022
Sunhill Framework is a simple, fast, and powerful PHP App Development Framework

Sunhill Framework is a simple, fast, and powerful PHP App Development Framework that enables you to develop more modern applications by using MVC (Model - View - Controller) pattern.

Mehmet Selcuk Batal 3 Dec 29, 2022
Supercharge your Laravel application's performance.

Introduction Laravel Octane supercharges your application's performance by serving your application using high-powered application servers, including

The Laravel Framework 3.3k Jan 1, 2023
FrankenPHP is a modern application server for PHP built on top of the Caddy web server

FrankenPHP: Modern App Server for PHP FrankenPHP is a modern application server for PHP built on top of the Caddy web server. FrankenPHP gives superpo

Kévin Dunglas 2.8k Jan 2, 2023
Framework for building extensible server-side progressive applications for modern PHP.

Chevere ?? Subscribe to the newsletter to don't miss any update regarding Chevere. Framework for building extensible server-side progressive applicati

Chevere 65 Jan 6, 2023
CakePHP: The Rapid Development Framework for PHP - Official Repository

CakePHP is a rapid development framework for PHP which uses commonly known design patterns like Associative Data Mapping, Front Controller, and MVC. O

CakePHP 8.6k Dec 31, 2022
QPM, the process management framework in PHP, the efficient toolkit for CLI development. QPM provides basic daemon functions and supervision mechanisms to simplify multi-process app dev.

QPM QPM全名是 Quick(or Q's) Process Management Framework for PHP. PHP 是强大的web开发语言,以至于大家常常忘记PHP 可以用来开发健壮的命令行(CLI)程序以至于daemon程序。 而编写daemon程序免不了与各种进程管理打交道。Q

Comos 75 Dec 21, 2021
li₃ is the fast, flexible and most RAD development framework for PHP

li₃ You asked for a better framework. Here it is. li₃ is the fast, flexible and the most RAD development framework for PHP. A framework of firsts li₃

Union of RAD 1.2k Dec 23, 2022
☄️ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Serve

☄️ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Server / PHP 命令行模式开发框架,支持 Swoole、WorkerMan、FPM、CLI-Server

Mix PHP 1.8k Dec 29, 2022