laminas/laminas-serializer
Laminas Serializer provides a flexible way to serialize and unserialize PHP data using multiple adapters (e.g., PHP serialize, JSON, Base64). Includes configuration options, adapter plugins, and error handling for safe, consistent data transformation.
Laminas\Serializer\Adapter\AdapterInterface). This aligns well with Laravel’s service container and IoC principles, enabling flexible serialization/deserialization for APIs, caching, or data storage.PSR/Container (v2.0.0+), which is natively supported in Laravel (via Illuminate\Contracts\Container\ContainerInterface). This ensures compatibility with Laravel’s service container without additional abstraction layers.serialize(), YAML) via adapters, enabling use-case-specific optimizations (e.g., JSON for APIs, PHP serialize for caching).Illuminate\Http\JsonResponse or Symfony\Component\HttpFoundation\Response for standardized serialization.Illuminate\Cache (e.g., Redis, Memcached) by replacing native serialize() with adapter-based serialization for cross-platform compatibility.serialize() for database storage, JSON for external APIs).spatie/array-to-object, nesbot/carbon, or laravel/sanctum for complex data structures.MsgPack, PythonPickle, Wddx) may require rearchitecting if these were previously used.Laminas\Serializer\Serializer (deprecated in v2.16.0) must migrate to AdapterInterface via DI container.json_encode()/serialize() for critical paths.laminas-servicemanager (v4.0+) is required, adding ~1MB to vendor size. Justify with feature usage (e.g., dynamic adapter switching).serialize()/unserialize() or augment it?GenericSerializerFactory be used for dynamic configuration?PhpSerialize for security (e.g., disabling unserialization of untrusted data).Validator or custom exceptions?Cache, Queue, or Http layers?AppServiceProvider::boot() or a dedicated SerializerServiceProvider.
$this->app->bind(
\Laminas\Serializer\Adapter\AdapterInterface::class,
\Laminas\Serializer\Adapter\Json::class
);
Serializer facade for convenience (e.g., Serializer::serialize($data)).serialize() in Illuminate\Cache\Repository with AdapterInterface for cross-platform cache storage.Illuminate\Http\Resources\JsonResource to use Json adapter for consistent API responses.public function toArray($request)
{
return (new \Laminas\Serializer\Adapter\Json())->serialize($this->resource);
}
Json adapter for API compatibility or PhpSerialize for database storage.serialize(), json_encode(), custom implementations).composer.json:
"require": {
"laminas/laminas-serializer": "^3.3"
}
laminas-servicemanager (v4.0+) if not already present.Json) in config/app.php or a service provider.'serializer' => [
'default' => \Laminas\Serializer\Adapter\Json::class,
'adapters' => [
'php' => \Laminas\Serializer\Adapter\PhpSerialize::class,
'xml' => \Laminas\Serializer\Adapter\Xml::class,
],
],
serialize() calls with app(\Laminas\Serializer\Adapter\AdapterInterface::class)->serialize($data).trait UsesSerializer
{
protected function serialize($data): string
{
return app(\Laminas\Serializer\Adapter\AdapterInterface::class)->serialize($data);
}
}
Cache, Queue, and Http layers.laminas-servicemanager v4.0+ requirement.laminas/laminas-serializer:^2.18 (last 8.0-compatible version).AdapterInterface directly. Legacy Serializer class usage requires migration to DI.AdapterInterface or wrap existing logic.laminas/laminas-mvc). Use unique namespace prefixes if needed.serialize() in non-critical paths (e.g., logging, non-sensitive caching).serialize() calls.AdapterInterface.laminas/laminas-serializer for breaking changes (e.g., PHP version drops).laminas-servicemanager alongside Laravel’s PSR-11 container updates.config/serializer.php to avoid hardcoded instances.'adapters' => [
'default' => env('SERIALIZER_ADAPTER', 'json'),
'options' => [
'json' => ['pretty_print' => env('JSON_PRETTY', false)],
'php' => ['handlers' => []], // Custom unserialization handlers
],
],
How can I help you explore Laravel packages today?