1. Go to this page and download the library: Download adaiasmagdiel/pdo-restify 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/ */
adaiasmagdiel / pdo-restify example snippets
use AdaiasMagdiel\PdoRestify\Api;
use AdaiasMagdiel\PdoRestify\Connection;
use AdaiasMagdiel\PdoRestify\Http\Request;
use AdaiasMagdiel\PdoRestify\Operation;
use AdaiasMagdiel\PdoRestify\RawCondition;
use AdaiasMagdiel\PdoRestify\Resource;
// Either let pdo-restify build the PDO instance for you...
$pdo = Connection::make('sqlite', __DIR__ . '/database.sqlite');
// ...or bring your own, already-configured PDO instance. pdo-restify doesn't
// care where it came from.
$posts = (new Resource('posts'))
->columns(['id', 'title', 'body', 'user_id']);
// The context comes from your app (e.g. the authenticated user). It's up to
// you to build it and pass it into handle() below. A policy returns a raw
// SQL boolean expression (plus its bound params) — real RLS, not a DSL.
$scopedToCurrentUser = fn (array $context): RawCondition =>
new RawCondition('user_id = :uid', [':uid' => $context['user_id']]);
$posts
->allow(Operation::Select, $scopedToCurrentUser)
->allow(Operation::Insert, $scopedToCurrentUser)
->allow(Operation::Update, $scopedToCurrentUser)
->allow(Operation::Delete, $scopedToCurrentUser);
$api = (new Api($pdo))->register($posts);
// No scoping needed for this operation? Skip the closure entirely and the
// resource stays wide open for it:
// $posts->allow(Operation::Select);
$request = new Request(
method: 'GET',
path: '/posts',
query: ['title' => 'like.*hello*', 'order' => 'id.desc', 'limit' => '10'],
);
$response = $api->handle($request, context: ['user_id' => 42]);
// $response->status -> 200
// $response->body -> the matching rows, scoped to user_id = 42
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.