woohoolabs/yin
PSR-7–compatible PHP framework for building JSON:API servers. Provides documents, resources, hydrators, request/response validation, pagination, relationship handling, content negotiation, middleware support, and custom serialization/deserialization.
Architecture Fit
The Yin package (v4.3.0) aligns well with Laravel’s domain-driven design (DDD) patterns, particularly for projects requiring hydrated domain objects with validation and flexible payload handling. The new validation feature for hydrated objects (#104) strengthens its fit for use cases where domain integrity must be enforced post-hydration (e.g., API responses, form submissions). The package’s focus on resource transformation (e.g., omitDataWhenNotIncluded) makes it ideal for APIs with granular data exposure requirements.
Integration Feasibility
omitDataWhenNotIncluded fix (#103) reduces risk for existing integrations where payload consistency was previously broken.Technical Risk
Yin\Contracts\Validatable).Key Questions
omitDataWhenNotIncluded fix? Was this causing production issues?ApiResource)?Stack Fit
Serializer and Validator; no additional dependencies needed if already in use.Migration Path
omitDataWhenNotIncluded usage to confirm the fix resolves gaps.Yin\Resource::omitDataWhenNotIncluded().Yin\Contracts\Validatable:
use Yin\Contracts\Validatable;
class UserDomain implements Validatable {
public function validate(): array { ... }
}
Yin\Validation\Validator.Compatibility
Sequencing
omitDataWhenNotIncluded issues in existing resources.toArray() logic).Maintenance
Support
Validator and Laravel’s Validator layers.#103, #104 resolved quickly), but no official Laravel package badge (risk of lower visibility).Scaling
Yin\Resource::validate()).Repository pattern).Failure Modes
| Scenario | Impact | Mitigation |
|---|---|---|
| Validation fails in production | 5xx errors for API consumers | Implement graceful degradation (e.g., return partial data). |
omitDataWhenNotIncluded misconfigured |
Data leaks or missing fields | Add tests for field inclusion/exclusion. |
| PHP 8.0+ required but not used | Deployment blockers | Use Laravel’s PHP version policy. |
Ramp-Up
How can I help you explore Laravel packages today?