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

Overview

Spiral Framework

Spiral HTTP Application Skeleton Latest Stable Version

Spiral Framework is a High-Performance PHP/Go 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 Application Server RoadRunner and the PHP code of your application stays in memory permanently (anti-memory leak tools included).

App Skeleton (CLI, GRPC, Admin Panel) | Documentation | Twitter | CHANGELOG | Contributing


Server Requirements

Make sure that your server is configured with following PHP version and extensions:

  • PHP 8.0+, 64bit
  • mb-string extension
  • PDO Extension with desired database drivers

Application Bundle

Application bundle includes the following components:

  • High-performance HTTP, HTTP/2 server based on RoadRunner
  • Console commands via Symfony/Console
  • Translation support by Symfony/Translation
  • Queue support for AMQP, Beanstalk, Amazon SQS, in-Memory
  • Stempler template engine
  • Security, validation, filter models
  • PSR-7 HTTP pipeline, session, encrypted cookies
  • DBAL and migrations support
  • Monolog, Dotenv
  • Prometheus metrics
  • Cycle DataMapper ORM

Installation

composer create-project spiral/app

Application server will be downloaded automatically (php-curl and php-zip required).

Once the application is installed you can ensure that it was configured properly by executing:

$ php ./app.php configure

To start application server execute:

$ ./rr serve -v -d

On Windows:

$ rr.exe serve -v -d

Application will be available on http://localhost:8080.

Read more about application server configuration here.

Testing:

To test an application:

$ ./vendor/bin/phpunit

Cloning:

Make sure to properly configure project if you cloned the existing repository.

$ copy .env.sample .env
$ php app.php encrypt:key -m .env
$ php app.php configure -vv
$ ./vendor/bin/rr get-binary

License:

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

Comments
  • Can't access authorized user after login

    Can't access authorized user after login

    I've set

    // Session
    Framework\Auth\TokenStorage\SessionTokensBootloader::class,
    // Database Session Storage
    Framework\Auth\TokenStorage\CycleTokensBootloader::class,
    

    And I could login with following code LoginController.php:

    public function loginPost(LoginRequest $login)
       {
           if (!$login->isValid()) {
               return [
                   'status' => 400,
                   'errors' => $login->getErrors()
               ];
           }
    
           // application specific login logic
           $user = $this->users->findOne(['username' => $login->getField('username')]);
           if (
               $user === null
               || !password_verify($login->getField('password'), $user->password)
           ) {
               return [
                   'status' => 400,
                   'error'  => 'No such user'
               ];
           }
    
           // create token
           $token = $this->authTokens->create(['userID' => $user->id]);
           $this->auth->start(
               $token
           );
    
           return [
               'status'  => 200,
               'message' => 'Authenticated!',
               'token' => $token
           ];
       }
    

    But When I tried to access protected route, home HomeController.php, I'm not getting the details of authorized user

     public function index(): string
        {
            if ($this->auth->getActor() === null) {
                throw new ForbiddenException();
            }
    
            dump($this->auth->getActor());
        }
    

    Here, I'm getting Forbidden. I'm following as per this documentation: https://spiral.dev/docs/security-authentication#actor-provider-and-token-payload

    Here the browser testin : https://storyxpress.co/video/k8wzh5q7nz2rsgwv3

    home/index: https://github.com/itsursujit/go-php/blob/master/app/src/Controller/HomeController.php#L43 Am I doing something wrong?

    [UPDATED: $this->auth on Controller returning null]

    opened by sujit-baniya 19
  • Getting error when following documentation

    Getting error when following documentation

    I tried to follow https://spiral.dev/docs/basics-quick-start I changed the PostCommand as mentioned in documentation to this:

    namespace App\Command\Seed;
    
    use App\Repository\UserRepository;
    use App\Service\PostService;
    use Faker\Generator;
    use Spiral\Console\Command;
    
    class PostCommand extends Command
    {
        protected const NAME = 'seed:post';
    
        /** @var UserRepository */
        private $users;
    
        /** @var PostService */
        private $postService;
    
        /**
         * @param UserRepository $users2
         * @param PostService    $postService
         * @param string|null    $name
         */
        public function __construct(UserRepository $users2, PostService $postService, ?string $name = null)
        {
            parent::__construct($name);
            $this->postService = $postService;
            $this->users = $users2;
        }
    
        protected function perform(Generator $faker): void
        {
            $users = $this->users->findAll();
    
            for ($i = 0; $i < 1000; $i++) {
                $user = $users[array_rand($users)];
    
                $post = $this->postService->createPost(
                    $user,
                    $faker->sentence(12),
                    $faker->text(900)
                );
    
                $this->sprintf("New post: <info>%s</info>\n", $post->title);
            }
        }
    }
    

    And I'm getting following error.

     [Cycle\ORM\Exception\ORMException]                                      
     Unable to find Entity role for repository App\Repository\UserRepository 
    

    What am I doing wrong.

    opened by sujit-baniya 18
  • Getting error when running seed

    Getting error when running seed

    I created command using following command:

    php app.php create:command seed\account seed:account

    then used following command to create entity

    php app.php create:entity account -f id:primary name:string -e

    Then I ran php app.php configure

    Then update AccountCommand as:

    protected function perform(TransactionInterface $tr, Generator $faker): void
        {
            for ($i = 0; $i < 100; $i++) {
                $user = new Account();
    
                $tr->persist($user);
            }
    
            $tr->run();
        }
    

    When I tried to run php app.php seed:account, I'm getting following error:

     [Cycle\ORM\Exception\ORMException]               
     Unable to resolve role of `App\Database\Account` 
    in /Users/sujit/Sites/labs/php/spiral-demo/vendor/cycle/orm/src/ORM.php:112
    

    I'm getting above error on freshly installed https://github.com/spiral/demo

    Why am I getting this error? Isn't there any resource to learn the framework easily?

    Getting hard to understand the errors

    opened by sujit-baniya 11
  • PHP 8.1.6 - composer create-project doesn't work

    PHP 8.1.6 - composer create-project doesn't work

    Creating a "spiral/app" project at "./backend"
    Installing spiral/app (v3.0.0)
      - Downloading spiral/app (v3.0.0)
      - Installing spiral/app (v3.0.0): Extracting archive
    Created project in /Users/guozhu/WorkSpace/onearth.fun/backend
    Loading composer repositories with package information
    Updating dependencies
    Your requirements could not be resolved to an installable set of packages.
    
      Problem 1
        - spiral/roadrunner-bridge[2.0-beta, ..., 2.0.x-dev] require psr/simple-cache 2 - 3 -> satisfiable by psr/simple-cache[2.0.0, 2.x-dev, 3.0.0, 3.0.x-dev].
        - You can only install one version of a package, so only one of these can be installed: psr/simple-cache[1.0.0, 1.0.1, 2.0.0, 2.x-dev, 3.0.0, 3.0.x-dev].
        - spiral/roadrunner-kv v2.2.0 requires psr/simple-cache ^1.0 -> satisfiable by psr/simple-cache[1.0.0, 1.0.1].
        - Conclusion: install spiral/roadrunner-kv v2.2.0 (conflict analysis result)
        - Root composer.json requires spiral/roadrunner-bridge ^2.0 -> satisfiable by spiral/roadrunner-bridge[2.0-beta, ..., 2.0.x-dev].
    
    help wanted 
    opened by better-maksim 9
  • Changing folder structure.

    Changing folder structure.

    I would like to use this package and when I follow the documentation and install it, everything works in its default state. However, I need to change the directory structure of the app, instead of having everything under the app folder, I would like everything under the root folder instead. No matter how I try to configure the application, it doesn't work. The documentation states I can change directories in the mapDirectories method, and after a dump, everything points to the right place.

    This is the error I keep getting:

    2022-11-12T16:27:41.731+1000    DEBUG   rpc             plugin was started      {"address": "tcp://127.0.0.1:6001", "list of the plugins with RPC methods:": ["metrics", "jobs", "kv", "informer", "resetter"]}
    [INFO] RoadRunner server started; version: 2.11.4, buildtime: 2022-10-06T14:43:01+0000
    2022-11-12T16:28:41.731+1000    ERROR   container/poller.go:16  vertex got an error     {"id": "http.Plugin", "error": "static_pool_allocate_workers: WorkerAllocate: failed to spawn a worker, possible reasons: https://roadrunner.dev/docs/known-issues-allocate-timeout/2.x/en"}
    github.com/roadrunner-server/endure/pkg/container.(*Endure).poll.func1
            github.com/roadrunner-server/[email protected]/pkg/container/poller.go:16
    2022-11-12T16:29:11.751+1000    ERROR   container/stop.go:147   vertices which are not stopped  {"id": ["logger.Plugin", "server.Plugin", "static.Plugin", "gzip.Plugin", "prometheus.Plugin", "send.Plugin", "memory.Plugin", "boltdb.Plugin", "redis.Plugin", "kv.Plugin", "memcached.Plugin", "config.Plugin"]}
    github.com/roadrunner-server/endure/pkg/container.(*Endure).shutdown
            github.com/roadrunner-server/[email protected]/pkg/container/stop.go:147
    github.com/roadrunner-server/endure/pkg/container.(*Endure).Shutdown
            github.com/roadrunner-server/[email protected]/pkg/container/endure.go:468
    reflect.Value.call
            reflect/value.go:584
    reflect.Value.Call
            reflect/value.go:368
    github.com/roadrunner-server/endure/pkg/fsm.(*FSMImpl).Transition
            github.com/roadrunner-server/[email protected]/pkg/fsm/fsm.go:216
    github.com/roadrunner-server/endure/pkg/container.(*Endure).Stop
            github.com/roadrunner-server/[email protected]/pkg/container/endure.go:340
    github.com/roadrunner-server/endure/pkg/container.(*Endure).startMainThread.func1
            github.com/roadrunner-server/[email protected]/pkg/container/poller.go:52
    2022-11-12T16:29:11.751+1000    ERROR   container/poller.go:54  error during stopping vertex    {"id": "http.Plugin", "error": "endure_shutdown: Timeout: timeout exceed, some vertices may not be stopped and can cause memory leak"}
    github.com/roadrunner-server/endure/pkg/container.(*Endure).startMainThread.func1
            github.com/roadrunner-server/[email protected]/pkg/container/poller.go:54
    error: static_pool_allocate_workers: WorkerAllocate: failed to spawn a worker, possible reasons: https://roadrunner.dev/docs/known-issues-allocate-timeout/2.x/en
    plugin: http.Plugin
    

    This is my mapDirectories() method:

    protected function mapDirectories(array $directories): array
    	{
    		if (!isset($directories['root'])) {
    			throw new BootException('Missing required directory `root`');
    		}
    
    		if (!isset($directories['app'])) {
    			$directories['app'] = $directories['root'] . '/';
    		}
    
    		$directories = \array_merge(
    			[		// public root
    				'app' => $directories['root'] . '/',
    				// public root
    				'public' => $directories['root'] . '/public/',
    				// vendor libraries
    				'vendor' => $directories['root'] . '/vendor/',
    				// data directories
    				'runtime' => $directories['root'] . '/runtime/',
    				'cache' => $directories['root'] . '/runtime/cache/',
    				// application directories
    				'config' => $directories['root'] . '/config/',
    				'resources' => $directories['root'] . '/resources/',
    			],
    			$directories
    		);
    		
    		return $directories;
    	}
    

    My folder structure:

    root
    |- /config
    |- /locale
    |- /migrations
    |- /public
    |- /runtime
    |- /src
    |- /tests
    |- /vendor
    |- /views
    |- ...
    |- .rr.yaml
    |- app.php
    |- composer.json
    |- rr
    |- ...
    

    If I reset everything back to defaults, there are no problems. I have change no other files other than directory paths in.

    help wanted 
    opened by nbish11 8
  • How to add Rest Verb on specific  Route

    How to add Rest Verb on specific Route

    I'm unable to add Verbs on specific route. I want to allow POST|DELETE|GET|PUT on specific route

    For e.g.

            $router->setRoute(
                'login.post',
                new Route('/loginPost', new Action(LoginController::class, 'loginPost'))
            );
    

    I want to allow above Routee to be POST only. How would I do that?

    opened by sujit-baniya 8
  • How to add BigInt as primary auto_increment key?

    How to add BigInt as primary auto_increment key?

    how to add BigInt as primary auto increment key in migration?

    Also I don't see the option to add Auto Increment as option.

    How to add other options for fields in migration like:

    • Comment
    • Timestamp with CURRENT_TIMESTAMP
    • Timestamp with ON UPDATE CURRENT_TIMESTAMP
    opened by sujit-baniya 7
  • Unable to retrieve JSON input

    Unable to retrieve JSON input

    Hello,

    I cannot access the raw JSON payload of a request either directly through a PSR7 ServerRequest nor through the input manager. This is a barebones project scaffolded through composer with no modifications. Nothing in the documentation states any bootloaders to enable/disable to be able to access JSON. Please advise.

    opened by lucasantarella 6
  • feat(tests): add PHPUnit and test helper to the application

    feat(tests): add PHPUnit and test helper to the application

    To users who use this skeleton application, they should be able to start writing tests immediately.

    I add PHPUnit and the startup configuration for the spiral app.

    Usage:

    1. Every test class should extend Tests\TestCase, not PHPUnit\Framework\TestCase
    2. There are some helpful methods to interact with Console and Web Server ( codes was copied from tests of Spiral Framework. like $this->get(), $this->post, $this->request, $this->runCommand, etc.
    opened by krwu 5
  • Cannot use partial stempler file in base layout

    Cannot use partial stempler file in base layout

    I defined partial components (header.dark.php, footer.dark.php) under layout/partial/.

    Then on base.dark.php I used following code

    <block:header/>
    <block:content>
        <use:element path="layout/partial/left-sidebar"/>
            <block:body/>
        <use:element path="layout/partial/right-sidebar"/>
        <use:element path="layout/partial/footer"/>
    </block:content>
    <block:footer/>
    

    But it doesn't seem to render those partial files.

    In each partial files I add some random text

    opened by sujit-baniya 4
  • Cannot enable TCP_DEFER_ACCEPT: protocol not available

    Cannot enable TCP_DEFER_ACCEPT: protocol not available

    /www/spiral/app $ ./spiral serve -v -d

    DEBU[0000] [headers]: disabled DEBU[0000] [grpc]: disabled DEBU[0000] [amqp]: disabled DEBU[0000] [beanstalk]: disabled DEBU[0000] [sqs]: disabled DEBU[0000] [ws]: disabled DEBU[0000] [health]: disabled DEBU[0000] [reload]: disabled DEBU[0000] [rpc]: started DEBU[0000] [http]: started DEBU[0000] [jobs]: started DEBU[0000] [broadcast]: started DEBU[0000] [metrics]: started ERRO[0000] [rpc]: [rpc]: cannot enable TCP_DEFER_ACCEPT: protocol not available DEBU[0000] [http]: stopped DEBU[0000] [jobs]: stopped DEBU[0000] [broadcast]: stopped DEBU[0000] [metrics]: stopped

    Error: [rpc]: cannot enable TCP_DEFER_ACCEPT: protocol not available

    question 
    opened by php-rock 3
  • Error with type(DB_PORT) in database.php with env()

    Error with type(DB_PORT) in database.php with env()

    TcpConnectionConfig requires port as an int. When getting DB_PORT from env(), we get a string and a typing error. I think we need to add type casting. image image

    bug 
    opened by darakanoit 0
  • Application router conflicts with `static` RR plugin

    Application router conflicts with `static` RR plugin

    Looks like a bug but not a bug. I'm a little bit confused because public directory do not contains these "files". Why this happens?

    Screenshot 2022-08-18 at 17 49 26

    Versions:

    • PHP: 8.1.8
    • Skeleton: v3.0-beta2
    opened by roquie 0
  • Could not install spiral framework on windows 10

    Could not install spiral framework on windows 10

    Description

    I got the below error while trying to install on windows 10 Warning: ZipArchive::getStream(): Invalid or uninitialized Zip object in C:\Users\HP\Documents\Fro Mac\Project\Docspera\jolter_master\app\vendor\spiral\framework\bin\spiral on line 165

    How To Reproduce

    run the command composer create-project spiral/app

    Additional Info

    | Q | A | ------------------- | --- | Framework Version | ^2.8 | PHP version | 7.4 | Operating system | Windows (10)

    opened by olaseyo 5
Releases(v3.1.0)
  • v3.1.0(Nov 8, 2022)

    What's Changed

    • Fix Ping job by @msmakouz in https://github.com/spiral/app/pull/74
    • New project structure with deptrac and psalm by @roxblnfk in https://github.com/spiral/app/pull/78
    • Fix dumprr by @kastahov in https://github.com/spiral/app/pull/80
    • Remove alias from composer.json; bump dependencies by @roxblnfk in https://github.com/spiral/app/pull/81

    New Contributors

    • @kastahov made their first contribution in https://github.com/spiral/app/pull/80

    Full Changelog: https://github.com/spiral/app/compare/v3.0.0...v3.1.0

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0(Sep 14, 2022)

    Spiral Framework 3.0 support

    What's Changed

    • Added SF 3.0 support by @msmakouz in https://github.com/spiral/app/pull/53
    • Use Symfony VarDumper by @roxblnfk in https://github.com/spiral/app/pull/55
    • Moved exception renderers and reporters from bootloader into handler by @butschster in https://github.com/spiral/app/pull/61
    • Added Monolog and Cycle bridge env variables by @msmakouz in https://github.com/spiral/app/pull/62
    • Added RoutesBootloade by @msmakouz in https://github.com/spiral/app/pull/63
    • Added ExceptionHandlerBootloader, ViewRenderer, error views by @msmakouz in https://github.com/spiral/app/pull/64
    • Replaced SnapshotterReporter with FileReporter by @msmakouz in https://github.com/spiral/app/pull/73
    • Moved symfony/var-dumper package to require-dev section by @roquie in https://github.com/spiral/app/pull/70

    New Contributors

    • @roxblnfk made their first contribution in https://github.com/spiral/app/pull/55
    • @butschster made their first contribution in https://github.com/spiral/app/pull/61
    • @roquie made their first contribution in https://github.com/spiral/app/pull/69

    Full Changelog: https://github.com/spiral/app/compare/v2.0.0...v3.0.0

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

    What's Changed

    • Using exception instead of error message by @msmakouz in https://github.com/spiral/app/pull/65
    • Removing an unnecessary section in RR config, adding return type by @msmakouz in https://github.com/spiral/app/pull/66

    Full Changelog: https://github.com/spiral/app/compare/v3.0-beta1...v3.0-beta2

    Source code(tar.gz)
    Source code(zip)
  • v3.0-beta1(Jun 24, 2022)

    composer create-project spiral/app:v3.0-beta1
    

    What's Changed

    • Adding RoutesBootloader @msmakouz in https://github.com/spiral/app/pull/63
    • Adding ExceptionHandlerBootloader, ViewRenderer, error views by @msmakouz in https://github.com/spiral/app/pull/64

    Full Changelog: https://github.com/spiral/app/compare/v3.0-beta...v3.0-beta1

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

    Added support for Spiral Framework 3.0

    composer create-project spiral/app:v3.0-beta
    

    What's Changed

    • Add SF 3.0 support by @msmakouz in https://github.com/spiral/app/pull/53
    • Use Symfony VarDumper [app v3] by @roxblnfk in https://github.com/spiral/app/pull/55
    • Moves exception renderers and reporters from bootloader into handler by @butschster in https://github.com/spiral/app/pull/61
    • Adding Monolog and Cycle bridge env variables by @msmakouz in https://github.com/spiral/app/pull/62

    New Contributors

    • @roxblnfk made their first contribution in https://github.com/spiral/app/pull/55
    • @butschster made their first contribution in https://github.com/spiral/app/pull/61

    Full Changelog: https://github.com/spiral/app/compare/v2.0.0...v3.0.0

    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Jun 16, 2022)

    What's Changed

    • Default RoadRunner driver for Queue by @msmakouz in https://github.com/spiral/app/pull/52
    • Sort bootloaders so that dotenv bootloader is loaded before the others by @kafkiansky in https://github.com/spiral/app/pull/57
    • Improve code documentation by @kafkiansky in https://github.com/spiral/app/pull/58

    New Contributors

    • @kafkiansky made their first contribution in https://github.com/spiral/app/pull/57

    Full Changelog: https://github.com/spiral/app/compare/v2.0.0...v2.1.0

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Feb 24, 2022)

    What's Changed

    • Adding all required configuration files
    • Adding support for CycleORM v2.0
    • Adding RoadRunner bridge by @msmakouz in https://github.com/spiral/app/pull/48
    • Adding spiral/testing by @msmakouz in https://github.com/spiral/app/pull/50

    New Contributors

    • @msmakouz made their first contribution in https://github.com/spiral/app/pull/48

    Full Changelog: https://github.com/spiral/app/compare/v1.4.0...v2.0.0

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-rc1(Jan 12, 2022)

  • v1.4.0(Jun 29, 2021)

  • v1.3.1(May 3, 2021)

  • v1.3.0(Dec 24, 2020)

  • v1.2.1(Sep 18, 2020)

  • v1.2.0(Sep 17, 2020)

  • v1.1.4(Aug 12, 2020)

  • v1.1.3(May 18, 2020)

  • v1.1.2(Apr 4, 2020)

  • v1.1.1(Mar 20, 2020)

  • v1.1.0(Feb 6, 2020)

  • v1.0.10(Nov 24, 2019)

  • v1.0.9(Nov 24, 2019)

  • v1.0.8(Nov 8, 2019)

  • v1.0.7(Nov 7, 2019)

  • v1.0.6(Sep 23, 2019)

  • v1.0.5(Sep 7, 2019)

    • Stempler engine used as the default view engine
    • enabled metrics service
    • more descriptive home view
    • exception example added to HomeController
    Source code(tar.gz)
    Source code(zip)
  • v1.0.4(Aug 13, 2019)

  • v1.0.3(Jul 16, 2019)

  • v1.0.2(Jun 7, 2019)

  • v1.0.1(May 24, 2019)

  • v1.0.0(May 24, 2019)

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
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
Cron jobs scheduler for Spiral Framework

This is a cron jobs scheduler that can be easily integrated with your project based on spiral framework. The idea was originally inspired by the Laravel Task Scheduling.

Non official Spiral framework packages 5 Dec 15, 2022
CleverStyle Framework is simple, scalable, fast and secure full-stack PHP framework

CleverStyle Framework is simple, scalable, fast and secure full-stack PHP framework. It is free, Open Source and is distributed under Free Public Lice

Nazar Mokrynskyi 150 Apr 12, 2022
High-Performance Long-Living PHP Framework for modern enterprise application development

Documentation · Discord · Telegram · Twitter Spiral Framework is a High-Performance Long-Living Full-Stack framework and group of over sixty PSR-compa

Spiral Scout 1.4k Jan 1, 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
Motan - a cross-language remote procedure call(RPC) framework for rapid development of high performance distributed services

Motan-PHP Overview Motan is a cross-language remote procedure call(RPC) framework for rapid development of high performance distributed services.

Weibo R&D Open Source Projects 81 Nov 19, 2022
Flare is a PHP full-stack web framework that is light, fast, flexible, and secure.

Flare framework is a PHP full-stack web framework that is simple ,powerful , fast , flexible, and secure with long-term support.

Flare framework 3 Oct 24, 2022
CodeIgniter - a PHP full-stack web framework that is light, fast, flexible and secure

CodeIgniter 4 Development What is CodeIgniter? CodeIgniter is a PHP full-stack web framework that is light, fast, flexible and secure. More informatio

CodeIgniter 4 web framework 4.5k Jan 4, 2023
💾 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
A Faster Lightweight Full-Stack PHP Framework

A Faster Lightweight Full-Stack PHP Framework 中文版  Docker env Just one command to build all env for the easy-php How to build a PHP framework by ourse

Zhan Shi 769 Dec 8, 2022
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
PSR Log - This repository holds all interfaces/classes/traits related to PSR-3.

PSR Log This repository holds all interfaces/classes/traits related to PSR-3. Note that this is not a logger of its own. It is merely an interface tha

PHP-FIG 10.1k Jan 3, 2023
FuelPHP v1.x is a simple, flexible, community driven PHP 5.3+ framework, based on the best ideas of other frameworks, with a fresh start! FuelPHP is fully PHP 7 compatible.

FuelPHP Version: 1.8.2 Website Release Documentation Release API browser Development branch Documentation Development branch API browser Support Forum

Fuel 1.5k Dec 28, 2022
An experiment to host a website with the content served over DNS.

html-over-dns An experiment to host a website inside of DNS. Now visible at https://jacobkiers.net/hod/index.html. To see what actually happens, use t

Jacob Kiers 28 Nov 26, 2022
Laravel 8 Project Restrict User Access From IP Addresses. prevent other ip address that want to access over secure api or urls.

block-ip-address-laravel Laravel 8 Project Restrict User Access From IP Addresses. prevent other ip address that want to access over secure api or url

Hasmukh Dharajiya 2 Mar 24, 2022
Fast PHP framework made with very loose optional components.

Nimble is a super fast mini-framework for PHP built on top of optional loose components. Installation Clone the repository $ git clone [email protected]:

Neo 53 Dec 22, 2022