undabot/json-api-core
Core JSON:API building blocks for PHP/Laravel applications: resource objects, document serialization, relationships, and standards-compliant responses. Helps you expose clean, consistent JSON:API endpoints without reimplementing the spec.
Assessment basis and confidence
composer.json constraints, usage documentation, test coverage reports, or downstream consumer inventory were supplied.Architecture fit
Integration feasibility
Declaration must be compatible error in a child override that declares no return type or a broader one. This is the only plausible break vector in a release of this shape.Technical risk
null from a method now typed non-nullable) would convert silently-tolerated behavior into a TypeError. This is the highest-impact unknown and cannot be assessed without the diff.Key questions
illuminate/support constraints), and is Laravel 10/11/12 in scope?protected/public on classes documented as extension points?null was previously a possible return? This is the one scenario that could break passive consumers.Stack fit
composer.json. A PHP minimum of 8.0+ is implied but not established by the note itself.Migration path
composer update <vendor>/<package> within the existing constraint. If the project pins ~2.1.0 or ^2.0, this is picked up automatically on the next update — which is the reason to consider pinning to an exact patch during a change-freeze window.phpstan analyse, psalm) after upgrade. The static pass is what catches return-type incompatibilities in application code that subclasses or mocks package classes — a plain runtime smoke test may not exercise those paths.Compatibility
class_alias/decorator patterns and any @method docblock annotations used for IDE support that assumed untyped returns.Sequencing
extends <PackageClass>, implements <PackageInterface>, and package-class mocks in tests. This is a fast, high-signal check and should gate the rest.Maintenance
Support
Scaling
Failure modes
Declaration of X::method() must be compatible with Y::method(): ReturnType — a fatal error at autoload. Detected on the first request or test run; no silent degradation. This is the good failure mode.TypeError on a method that previously returned null or an unexpected type. Manifests on the specific code path only, so it can escape a shallow smoke test — this is why the static analysis step matters.Ramp-up
TPM recommendation
composer.json, Laravel support matrix, CHANGELOG, and CI status so this assessment can move from conditional to evidenced. The current evaluation is thin because the input is thin, not because the package is suspect.How can I help you explore Laravel packages today?