docs
yup
remove cache and do tweaks
This is a collection of components for creating web applications.
Request
, Response
and CurlHttpClient
Json::encode
, Json::decode
render_template()
)Install:
composer require thirdplace/components:dev-main
Example usage:
hello.html.php:
<?php
use function Thirdplace\e;
?>
Hello <?= e($name) ?>
index.php:
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use Thirdplace\Application;
use Thirdplace\Container;
use Thirdplace\Json;
use Thirdplace\Request;
use Thirdplace\Response;
use Thirdplace\Session;
use function Thirdplace\render_template;
class HelloController
{
public function about(Request $request): Response
{
return new Response(render_template(__DIR__ . '/about.html.php'));
}
public function hello(Request $request, array $args): Response
{
$name = $args[0];
return new Response(render_template(__DIR__ . '/hello.html.php', ['name' => $name]));
}
public function goodbye(Request $request): Response
{
$message = $request->attribute('message');
$json = Json::encode(['message' => $message]);
return new Response($json, 200, ['content-type' => 'application/json']);
}
}
$container = new Container();
$container[HelloController::class] = function($c) {
return new HelloController();
};
$container['session_middleware'] = function ($c) {
return function ($request, $next) use ($c) {
$session = $c[Session::class];
$session->start();
return $next($request);
};
};
$container[Session::class] = function($c) {
return new Session($c['session_options']);
};
$container['session_options'] = [
'name' => 'sid',
];
$app = new Application($container);
$app->add($container['session_middleware']);
$app->addRoute('GET', '/about', [HelloController::class, 'about']);
$app->addRoute('GET', '/hello/(\w+)', [HelloController::class, 'hello']);
$goodbyeMiddleware = function (Request $request, $next) {
$request2 = $request->withAttribute('message', 'goodbye!!!');
return $next($request2);
};
$app->addRoute('GET', '/goodbye', [HelloController::class, 'goodbye'], [$goodbyeMiddleware]);
$app->run();
The goal of this project is to create useful components for those who wants simple minimal framework code.