Github GitHub - php-runtime/runtime: A temporary home for runtimes.
source link: https://github.com/php-runtime/runtime
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
PHP Runtimes
In early 2021, Symfony created a "Runtime component". This component may look complex, weird and full of hacks but it is a game changer for how we run PHP applications.
With the Runtime component, we can look at each application as a "black box". A box
that has no connection to globals like $_SERVER
or $_GET
. To run the application
you need (you guessed it) a Runtime
. It is a class that looks at the black box
to figure out what input it requires and handles the output.
Consider this small application that returns an UUID.
namespace Acme; class Application { public function run() { return Uuid::uuid4()->toString(); } }
To use this application with the Runtime component. We need our front-controller to return a callable that will create the application.
// index.php return function() { return new Acme\Application(); }
If you want to use this application in a CLI environment, you need a
Runtime
that knows how to run an Acme\Application
object and print the output on
CLI. If you want to use it with Nginx/PHP-FPM then you need another Runtime
that converts the application's output to a HTTP response.
Why is this a good thing?
Since your application is not connected to the global state, it is very portable.
It is easy to create a Runtime
to run the application with Bref, Swoole or
ReactPHP without making any change to the application itself.
Since most modern PHP application is based on Symfony's HttpKernel, PSR-7 or PSR-15 we don't need too many different runtimes. This organization holds many PHP packages with runtimes for the most popular environments. It is not "the source of all runtimes", but rather a temporary place where runtimes can live before they move in to Bref/Swoole/RoadRunner etc.
All runtimes have hard dependencies to make installation easier. Everything should "just work".
Available Runtimes
Run your application on AWS Lambda with Bref.
ReactPHP
Event-driven, non-blocking I/O with ReactPHP.
RoadRunner
Spin up multiple PHP processes with Golang using RoadRunner.
Swoole
Build high-performance, scalable, concurrent HTTP services with Swoole.
PHP-FPM and traditional web servers
These runtimes are for PHP-FPM and the more traditional web servers one might use for local development.
Laravel
A runtime for Laravel and Artisan.
PSR-7 and PSR-15
Use the popular PSR architecture.
Symfony
The runtime for Symfony is included in the runtime component.
Contribute
Contributions are always welcomed. Send you PR or open an issue here: https://github.com/php-runtime/runtime
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK