1. Go to this page and download the library: Download oasys/core 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/ */
oasys / core example snippets
declare(strict_types=1);
use App\Controller\IndexController;
use Oasys\Kernel;
use Oasys\Routing\ExceptionMapper;
use Oasys\Routing\Router;
use DI\ContainerBuilder;
use GuzzleHttp\Psr7\ServerRequest;
// Map default exception handler
$exceptionMapper = new ExceptionMapper([IndexController::class, 'error']);
// Build kernel
$kernel = new Kernel(
$container,
$router,
$exceptionMapper
);
// Build request
$request = ServerRequest::fromGlobals();
// Resolve request
$response = $kernel->resolve($request);
// Emit response
Kernel::send($response);
declare(strict_types=1);
namespace App\Controller;
use GuzzleHttp\Psr7\Response;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
final class IndexController
{
public function home(ServerRequestInterface $request): ResponseInterface
{
return new Response(
200,
['Content-Type' => 'text/plain; charset=utf-8'],
"Welcome home\n"
);
}
public function error(ServerRequestInterface $request): ResponseInterface
{
return new Response(
500,
['Content-Type' => 'text/plain; charset=utf-8'],
"Internal server error\n"
);
}
}
use Oasys\Routing\Attributes\Get;
// Post, Put, Patch, Delete, Head, Options, Connect, Trace
#[Get('/')]
public function home(ServerRequestInterface $request): ResponseInterface
{
// ...
}
$router->bind(IndexController::class);
#[Post('/contact-form')]
#[Put('/contact-form')]
public function send(ServerRequestInterface $request): ResponseInterface
{
// ...
}
$router = new Router([
'id' => '\d+',
// other aliases...
]);
$router->get('/user/{id}', [UserController::class, 'show']);
// or
#[Get('/user/{id}')]
public function show(ServerRequestInterface $request): ResponseInterface
{
// ...
}
declare(strict_types=1);
namespace App\Middleware;
use GuzzleHttp\Psr7\Response;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
final class TimingMiddleware implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$start = microtime(true);
$response = $handler->handle($request);
$elapsed = number_format((microtime(true) - $start) * 1000, 2);
return $response->withHeader('X-Response-Time-ms', (string) $elapsed);
}
}
use Oasys\Middleware\MiddlewareAttribute as Middleware;
#[Middleware(TimingMiddleware::class)]
final class ProfileController
{
#[Middleware(AuthMiddleware::class)]
public function show(ServerRequestInterface $request): ResponseInterface
{
// ...
}
}
#[Middleware(ContentTypeMiddleware::class, 'application/json' /* , other parameters...*/)]
public function show(ServerRequestInterface $request): ResponseInterface
{
// ...
}
declare(strict_types=1);
namespace App\Middleware;
use GuzzleHttp\Psr7\Response;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
final class ContentTypeMiddleware implements MiddlewareInterface
{
public function __construct(
protected string $supported
// other parameters...
) {}
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
if ($request->getHeaderLine('Content-Type') !== $this->supported) {
return new Response(
400,
['Content-Type' => 'text/plain'],
sprintf("Bad request:
$exceptionMapper = new ExceptionMapper([ErrorController::class, 'serverError']);
declare(strict_types=1);
namespace App\Controller;
use GuzzleHttp\Psr7\Response;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Throwable;
final class ErrorController
{
public function serverError(ServerRequestInterface $request): ResponseInterface
{
/** @var Throwable|null $e */
$e = $request->getAttribute(Throwable::class);
return new Response(
500,
['Content-Type' => 'text/plain; charset=utf-8'],
sprintf("Internal Server Error: %s\n", $e?->getMessage())
);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.