Download the PHP package decodelabs/harvest without Composer
On this page you can find all versions of the php package decodelabs/harvest. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package harvest
Harvest
PSR-15 HTTP stack without the mess
Harvest provides a unified PSR-15 HTTP stack with a simple, expressive API on top of PHP Fibers to avoid common pitfalls of other PSR-15 implementations such as call stack size, memory usage and Middleware traversal.
Installation
Install via Composer:
Usage
Harvest provides the full PSR-15 stack, including Request, Response, Middleware and Handler interfaces.
The root of the system is the Dispatcher
which takes a Request
and a Middleware Profile
and returns a Response
.
The Profile
defines what Middleware is used to process the request and how it is ordered.
String names passed to a Profile
will resolve via Slingshot
, allowing for easy dependency injection and container resolution.
Ordering
Middleware is sorted by a dual level priority system, first grouped by the intent of the Middleware, in this order:
- ErrorHandler - catches and handles errors within the stack
- Inbound - processes the request before it is passed to the next Middleware
- Outbound - processes the response before it is sent to the client
- Generic - generic Middleware that does not fit into the above categories
- Generator - generates or loads the primary response content
Then each group is sorted by the priority of the Middleware, with lower numbers being higher in the group. Harvest Middleware implement an extension to the Psr Middleware interface, defining defaults for group and priority.
These can be overridden when defining your Profile
:
Fibers
Harvest uses PHP Fibers to flatten the call stack within the dispatch loop - this makes for considerably less noise when debugging and understanding Exception call stacks.
Instead of a call stack that grows by at least 2 frames for every Middleware instance in the queue (which gets unwieldy very quickly), Harvest utilises the flexbility of Fibers to break out of the stack at each call to the next HTTP handler and effectively run each Middleware as if it were in a flat list, but without breaking Exception handling or any of the semantics of stacking the Middleware contexts.
Transports
Once a Response has been generated, you can then use an instance of a Harvest Transport
to send it to the client.
Harvest currently provides a Generic Transport implementation that uses PHP's built in header and output stream functions.
Responses
Harvest provides easy shortcuts for creating Responses:
Cookies
Harvest provides a Cookies
Middleware and a global Cookie Collection
that allows you to define request-level cookies separately from the response generation process and merges them into the response. Just make sure the Cookie Middleware is added to your Profile
.
Licensing
Harvest is licensed under the MIT License. See LICENSE for the full license text.
All versions of harvest with dependencies
decodelabs/archetype Version ^0.3.8
decodelabs/coercion Version ^0.3
decodelabs/collections Version ^0.11
decodelabs/compass Version ^0.3
decodelabs/deliverance Version ^0.3
decodelabs/enumerable Version ^0.2.1
decodelabs/exceptional Version ^0.5.3
decodelabs/glitch-support Version ^0.5.1
decodelabs/monarch Version ^0.1.1
decodelabs/singularity Version ^0.3
decodelabs/slingshot Version ^0.2
decodelabs/veneer Version ^0.12.3
psr/container Version ^2.0.2
psr/http-factory Version ^1.1
psr/http-message Version ^2.0
psr/http-server-handler Version ^1.0.2
psr/http-server-middleware Version ^1.0.2
nesbot/carbon Version ^3