clue / framework-x
Framework X – the simple and fast micro framework for building reactive web applications that run anywhere.
Fund package maintenance!
clue
clue.engineering/support
Installs: 261 232
Dependents: 10
Suggesters: 1
Security: 0
Stars: 873
Watchers: 25
Forks: 52
Open Issues: 2
Requires
- php: >=7.1
- nikic/fast-route: ^1.3
- react/async: ^4 || ^3
- react/http: ^1.9
- react/promise: ^3 || ^2.10
- react/socket: ^1.13
Requires (Dev)
- phpstan/phpstan: 1.10.47 || 1.4.10
- phpunit/phpunit: ^9.6 || ^7.5
- psr/container: ^2 || ^1
- react/promise-timer: ^1.10
README
Framework X – the simple and fast micro framework for building reactive web applications that run anywhere.
Support us
We invest a lot of time developing, maintaining and updating our awesome open-source projects. You can help us sustain this high-quality of our work by becoming a sponsor on GitHub. Sponsors get numerous benefits in return, see our sponsoring page for details.
Let's take these projects to the next level together! 🚀
Quickstart
Start by creating an empty project directory.
Next, we can start by taking a look at a simple example application.
You can use this example to get started by creating a new public/
directory with
an index.php
file inside:
<?php require __DIR__ . '/../vendor/autoload.php'; $app = new FrameworkX\App(); $app->get('/', function () { return React\Http\Message\Response::plaintext( "Hello wörld!\n" ); }); $app->get('/users/{name}', function (Psr\Http\Message\ServerRequestInterface $request) { return React\Http\Message\Response::plaintext( "Hello " . $request->getAttribute('name') . "!\n" ); }); $app->run();
Next, we need to install X and its dependencies to actually run this project. In your project directory, simply run the following command:
$ composer require clue/framework-x:^0.16
See also the CHANGELOG for details about version upgrades.
That's it already! The next step is now to serve this web application. One of the nice properties of this project is that is works both behind traditional web server setups as well as in a stand-alone environment.
For example, you can run the above example using the built-in web server like this:
$ php public/index.php
You can now use your favorite web browser or command line tool to check your web application responds as expected:
$ curl http://localhost:8080/
Hello wörld!
Documentation
Hooked? See website for full documentation.
Found a typo or want to contribute? The website documentation is built from the source documentation files in the docs/ folder.
Contribute
You want to contribute to the Framework X source code or documentation? You've come to the right place!
To contribute to the source code just locate the src/ folder and you'll find all content in there. Additionally, our tests/ folder contains all our unit tests and acceptance tests to assure our code works as expected. For more information on how to run the test suite check out our testing chapter.
If you want to contribute to the documentation of Framework X
found on the website, take a look inside the docs/ folder. You'll find further
instructions inside the README.md
in there.
Found a typo on our website? Simply go to our
website repository
and follow the instructions found in the README
.
Tests
To run the test suite, you first need to clone this repo and then install all dependencies through Composer:
$ composer install
To run the test suite, go to the project root and run:
$ vendor/bin/phpunit
The test suite is set up to always ensure 100% code coverage across all supported environments. If you have the Xdebug extension installed, you can also generate a code coverage report locally like this:
$ XDEBUG_MODE=coverage vendor/bin/phpunit --coverage-text
Additionally, you can run our sophisticated integration tests to verify the framework examples work as expected behind your web server. Use your web server of choice (see deployment documentation) and execute the tests with the URL to your installation like this:
$ php tests/integration/public/index.php $ tests/integration.bash http://localhost:8080/
License
This project is released under the permissive MIT license.
Did you know that I offer custom development services and issuing invoices for sponsorships of releases and for contributions? Contact me (@clue) for details.