pocketbase / sdk-php
PocketBase SDK for PHP 8.2+ - Interact with PocketBase REST API
1.0
2026-03-15 00:52 UTC
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.8
- psr/http-client: ^1.0
- psr/http-message: ^1.0|^2.0
Requires (Dev)
- mockery/mockery: ^1.6
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.5
README
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 registrosauthAsAdmin(string $email, string $password)- Autenticar como adminauthWithPassword(string $collection, string $email, string $password)- Autenticar usuariocollections()- Obtener servicio de coleccionesfiles()- Obtener servicio de archivosisAuth()- Verificar si está autenticadologout()- 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
- Fork el proyecto
- Crea una rama (
git checkout -b feature/nueva-caracteristica) - Commit tus cambios (
git commit -am 'Agregar nueva característica') - Push a la rama (
git push origin feature/nueva-caracteristica) - Crea un Pull Request
Licencia
MIT - ver LICENSE