API Reference

Quick reference for common framework surfaces

This page is a compact reference for APIs you will use frequently in Glueful applications.

Response Helpers

use Glueful\Http\Response;

Response::success($data);
Response::created($data);
Response::noContent();
Response::notFound('Not found');
Response::unauthorized('Unauthorized');
Response::forbidden('Forbidden');
Response::validation(['field' => ['Message']]);
Response::error('Server error', 500);
Response::paginated($items, $total, $page, $perPage);

BaseController Helpers

Inside controllers that extend Glueful\Controllers\BaseController:

$data = $this->getRequestData();
$putData = $this->getPutData();

return $this->success($data);
return $this->created($data);
return $this->notFound('Missing');

Database

Resolve the connection with db($context) (inside a BaseController, use $this->context) or inject Glueful\Database\Connection:

$db = db($this->context);

$users = $db->table('users')->get();
$user  = $db->table('users')->where('id', 1)->first();
$id    = $db->table('users')->insertGetId(['name' => 'John']);   // insert() returns a row count
$db->table('users')->where('id', 1)->update(['name' => 'Jane']);
$db->table('users')->where('id', 1)->delete();                    // soft-deletes if deleted_at exists
$page  = $db->table('users')->paginate(page: 1, perPage: 25);

$db->transaction(function () use ($db) {
    // ...
});

See Database for the full query builder and ORM for models.

Validation

Typed request DTO (validated before the controller runs, 422 on failure):

use Glueful\Validation\Attributes\Rule;
use Glueful\Validation\Contracts\RequestData;

final class CreateUserData implements RequestData
{
    public function __construct(
        #[Rule('required|email|max:255')]
        public readonly string $email,
    ) {}
}

public function store(CreateUserData $data): Response { /* ... */ }

Rule-object validation:

use Glueful\Validation\Validator;
use Glueful\Validation\Rules\Required;

$validator = new Validator([
    'name' => [new Required()],
], $context);   // context (or connection:) lets unique/exists rules query the database

$errors = $validator->validate($input);

Rule strings: required, string, email, max:N, in:a,b, unique:table,column, exists:table,column, nullable, sometimes, and more. See Validation.

Routing Attributes

use Glueful\Routing\Attributes\Controller;
use Glueful\Routing\Attributes\Get;
use Glueful\Routing\Attributes\Route;

#[Controller(prefix: '/v1/users')]
class UserController
{
    #[Get('/{id}', where: ['id' => '\d+'])]
    public function show(int $id): \Glueful\Http\Response
    {
        return \Glueful\Http\Response::success(['id' => $id]);
    }

    #[Route('/search', methods: 'GET')]
    public function search(): \Glueful\Http\Response
    {
        return \Glueful\Http\Response::success([]);
    }
}

CLI

Current commonly used commands:

php glueful install
php glueful serve
php glueful migrate:run
php glueful migrate:status
php glueful scaffold:controller UserController
php glueful scaffold:model User
php glueful scaffold:request CreateUserRequest
php glueful scaffold:dto CreateUserData
php glueful migrate:verify
php glueful generate:key
php glueful generate:openapi
php glueful cache:clear