ergebnis/json-pointer
RFC 6901 JSON Pointer abstraction for PHP. Create and convert reference tokens and pointers between plain strings, JSON strings, and URI fragment identifiers, handling proper escaping/encoding. Install via Composer: ergebnis/json-pointer.
JsonPointer, ReferenceToken) enforces immutability, reducing side effects—a best practice for Laravel services and DTOs.Specification class enables declarative validation of JSON pointers, useful for:
composer require ergebnis/json-pointer with no Laravel-specific dependencies.Illuminate\Validation to validate JSON pointers in API requests.config() helper to manipulate nested JSON configs (e.g., config(['services.api.' . $pointer->toString() => $value])).$model->getAttribute($pointer)).~1 for / escaping).#/path?query=value), but toUriFragmentIdentifierString() covers basic needs.explode('/', $pointer)) or augment existing JSON libraries (e.g., spatie/array-to-object)?JsonPointer as a singleton)?InvalidJsonPointerException or return null?)Validator or FormRequest classes be extended to support pointer validation?json_decode + manual traversal) or other packages like symfony/yaml (for YAML pointers).json extension (enabled by default in Laravel).JsonPointer methods.JsonPointer::fromJsonString('/invalid~') will fail fast).JsonPointer (e.g., before: explode('/', $path); after: JsonPointer::fromJsonString($path)->getTokens()).JsonPointer for input validation (e.g., Validator::extend).LegacyPointer::toJsonPointer()) during transition.Illuminate\Validation\Validator to support pointer syntax:
Validator::extend('json_pointer', function ($attribute, $value, $parameters) {
try {
$pointer = JsonPointer::fromJsonString($value);
return $pointer->isValid(); // Custom logic
} catch (InvalidJsonPointerException) {
return false;
}
});
toArray() to dynamically include/exclude fields:
public function toArray($request) {
$pointer = JsonPointer::fromJsonString($request->input('fields'));
return $this->filterAttributes($pointer);
}
spatie/laravel-json-schema-validation to validate pointers against schemas.rebing/graphql-laravel for field resolution.JsonPointer::fromJsonString($request->path)).JsonPointer.config(['services.' . $pointer->toString() => $value])).JsonPointer::fromJsonString($request->fields))./user/profile/address) are more readable than magic strings.append(), equals())./ vs. ~1).JsonPointer::debug() method to log pointer structures.LIKE queries (e.g., WHERE path LIKE '/user/%').| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Invalid pointer in API |
How can I help you explore Laravel packages today?