1. Go to this page and download the library: Download xp-forge/web library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
xp-forge / web example snippets
use web\Application;
class Service extends Application {
public function routes() {
return [
'/hello' => function($req, $res) {
$res->answer(200, 'OK');
$res->send('Hello '.$req->param('name', 'Guest'), 'text/plain');
}
];
}
}
use web\Request;
$request= ...
$request->method(); // The HTTP method, e.g. "GET"
$request->uri(); // The request URI, a util.URI instance
$request->headers(); // All request headers as a map
$request->header($name); // The value of a single header
$request->cookies(); // All cookies
$request->cookie($name); // The value of a single cookie
$request->params(); // All request parameters as a map
$request->param($name); // The value of a single parameter
use web\{Response, Cookie};
$response= ...
// Set status code, header(s) and cookie(s)
$response->answer($status);
$response->header($name, $value);
$response->cookie(new Cookie($name, $value));
// Sends body using a given content type
$response->send($body, $type);
// Transfers an input stream using a given content type. Uses
// chunked transfer-encoding.
yield from $response->transmit($in, $type);
// Same as above, but specifies content length before-hand
yield from $response->transmit($in, $type, $size);
use web\Handler;
$redirect= new class() implements Handler {
public function handle($req, $res) {
$req->status(302);
$req->header('Location', 'https://example.com/');
}
};
use web\Filter;
use util\profiling\Timer;
use util\log\{Logging, LogCategory};
$timer= new class(Logging::all()->toConsole()) implements Filter {
private $timer;
public function __construct(private LogCategory $cat) {
$this->timer= new Timer();
}
public function filter($request, $response, $invocation) {
$this->timer->start();
try {
yield from $invocation->proceed($request, $response);
} finally {
$this->cat->debugf('%s: %.3f seconds', $request->uri(), $this->timer->elapsedTime());
}
}
}
use io\Folder;
$uploads= new Folder('...');
$handler= function($req, $res) use($uploads) {
if ($multipart= $req->multipart()) {
// See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100
if ('100-continue' === $req->header('Expect')) {
$res->hint(100, 'Continue');
}
// Transmit files to uploads directory asynchronously
$files= [];
$bytes= 0;
foreach ($multipart->files() as $name => $file) {
$files[]= $name;
$bytes+= yield from $file->transmit($uploads);
}
// Do something with files and bytes...
}
};
$handler= function($req, $res) {
$res->header('Link', [
'</main.css>; rel=preload; as=style',
'</script.js>; rel=preload; as=script'
]);
$res->hint(103);
// Do some processing here to render $html
$html= ...
$res->answer(200, 'OK');
$res->send($html, 'text/html; charset=utf-8');
}
use web\Application;
class Site extends Application {
public function routes() {
return [
'/home' => function($req, $res) {
// Home page
},
'/' => function($req, $res) {
// Routes are re-evaluated as if user had called /home
return $req->dispatch('/home');
},
];
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.