pocketbase/sdk-php

PocketBase SDK for PHP 8.2+ - Interact with PocketBase REST API

Maintainers

Package info

github.com/joseescobar-dev/pocketbase-sdk-php

pkg:composer/pocketbase/sdk-php

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0 2026-03-15 00:52 UTC

This package is auto-updated.

Last update: 2026-05-15 01:18:46 UTC


README

PHP License Packagist

SDK PHP 8.2+ para interactuar con la API REST de PocketBase.

Características

  • ✅ Autenticación (Admin y Usuarios)
  • ✅ CRUD de colecciones y registros
  • ✅ QueryBuilder fluente (filtros, orden, expand)
  • ✅ Gestión de archivos
  • ✅ Tipado estricto (strict_types)
  • ✅ DTOs (Data Transfer Objects)
  • ✅ Excepciones personalizadas

Instalación

composer require pocketbase/sdk-php

Requisitos

  • PHP 8.2+
  • GuzzleHttp 7.8+

Uso Rápido

<?php

use PocketBase\SDK\Client\PocketBaseClient;
use PocketBase\SDK\Query\QueryBuilder;

$pb = new PocketBaseClient('http://127.0.0.1:8090');

Autenticación

// Como admin (superuser)
$auth = $pb->authAsAdmin('admin@email.com', 'password123');

// Como usuario de una colección
$auth = $pb->authWithPassword('users', 'user@email.com', 'password');

// Verificar estado
if ($pb->isAuth()) {
    echo "Autenticado";
}

CRUD de Registros

// Listar con filtros, orden y expansión
$query = (new QueryBuilder())
    ->filter('status = "active"')
    ->sortDesc('created')
    ->expand('author,category')
    ->fields('id,title,author')
    ->page(1)
    ->perPage(20);

$records = $pb->collection('posts')->getList($query);

// Obtener uno
$post = $pb->collection('posts')->getOne('record_id');

// Crear
$new = $pb->collection('posts')->create([
    'title' => 'Nuevo post',
    'content' => 'Contenido...',
]);

// Actualizar
$updated = $pb->collection('posts')->update('record_id', [
    'title' => 'Título actualizado',
]);

// Eliminar
$pb->collection('posts')->delete('record_id');

Gestión de Colecciones (solo admin)

$collections = $pb->collections()->getList();
$collection = $pb->collections()->getOne('posts');

Manejo de Errores

use PocketBase\SDK\Exception\ApiException;
use PocketBase\SDK\Exception\AuthException;

try {
    $pb->authAsAdmin('admin@email.com', 'wrongpassword');
} catch (AuthException $e) {
    echo "Error de auth: " . $e->getMessage();
} catch (ApiException $e) {
    echo "Error API: " . $e->getMessage();
    echo "Código: " . $e->statusCode;
}

API Reference

PocketBaseClient

$pb = new PocketBaseClient(string $baseUrl, ?Client $httpClient = null)

Métodos principales:

  • collection(string $name) - Obtener servicio de registros
  • authAsAdmin(string $email, string $password) - Autenticar como admin
  • authWithPassword(string $collection, string $email, string $password) - Autenticar usuario
  • collections() - Obtener servicio de colecciones
  • files() - Obtener servicio de archivos
  • isAuth() - Verificar si está autenticado
  • logout() - Cerrar sesión

QueryBuilder

(new QueryBuilder())
    ->filter(string $filter)           // Agregar filtro
    ->filterAnd(string ...$filters)    // Filtros AND
    ->filterOr(string ...$filters)     // Filtros OR
    ->sort(string $field, bool $desc)  // Ordenar
    ->sortAsc(string $field)           // Orden ascendente
    ->sortDesc(string $field)          // Orden descendente
    ->expand(string ...$relations)    // Expandir relaciones
    ->fields(string ...$fields)       // Seleccionar campos
    ->page(int $page)                  // Página
    ->perPage(int $perPage)            // Registros por página
    ->limit(int $limit)                // Alias de perPage

Testing

composer install
./vendor/bin/phpunit

Contribuir

  1. Fork el proyecto
  2. Crea una rama (git checkout -b feature/nueva-caracteristica)
  3. Commit tus cambios (git commit -am 'Agregar nueva característica')
  4. Push a la rama (git push origin feature/nueva-caracteristica)
  5. Crea un Pull Request

Licencia

MIT - ver LICENSE