{"id":39856635,"url":"https://github.com/dmt-software/jms-parameter-bag-handler","last_synced_at":"2026-01-18T13:52:02.712Z","repository":{"id":56970339,"uuid":"133815041","full_name":"dmt-software/jms-parameter-bag-handler","owner":"dmt-software","description":"A JMS serializer handler that serializes and deserializes bag of parameters that are not predefined","archived":false,"fork":false,"pushed_at":"2023-03-29T23:01:34.000Z","size":23,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-18T09:10:00.001Z","etag":null,"topics":["jms-serializer","parameterbag"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dmt-software.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-17T13:09:27.000Z","updated_at":"2023-03-29T23:01:39.000Z","dependencies_parsed_at":"2022-08-21T10:50:53.735Z","dependency_job_id":null,"html_url":"https://github.com/dmt-software/jms-parameter-bag-handler","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/dmt-software/jms-parameter-bag-handler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmt-software%2Fjms-parameter-bag-handler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmt-software%2Fjms-parameter-bag-handler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmt-software%2Fjms-parameter-bag-handler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmt-software%2Fjms-parameter-bag-handler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmt-software","download_url":"https://codeload.github.com/dmt-software/jms-parameter-bag-handler/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmt-software%2Fjms-parameter-bag-handler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28537239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T13:04:05.990Z","status":"ssl_error","status_checked_at":"2026-01-18T13:01:44.092Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jms-serializer","parameterbag"],"created_at":"2026-01-18T13:52:02.601Z","updated_at":"2026-01-18T13:52:02.693Z","avatar_url":"https://github.com/dmt-software.png","language":"PHP","readme":"# ParameterBag Handler\n\n[![Build Status](https://travis-ci.org/dmt-software/jms-parameter-bag-handler.svg?branch=master)](https://travis-ci.org/dmt-software/jms-parameter-bag-handler)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/dmt-software/jms-parameter-bag-handler/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/dmt-software/jms-parameter-bag-handler/?branch=master)\n[![Code Coverage](https://scrutinizer-ci.com/g/dmt-software/jms-parameter-bag-handler/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/dmt-software/jms-parameter-bag-handler/?branch=master)\n\n## Install\n`composer require dmt-software/jms-parameter-bag-handler`\n\n## Usage\n### Configure Serializer\n\n```php\n\u003c?php\n \nuse DMT\\Serializer\\ParameterBagHandler;\nuse JMS\\Serializer\\Handler\\HandlerRegistry;\nuse JMS\\Serializer\\SerializerBuilder;\n \n$serializer = SerializerBuilder::create()\n    -\u003econfigureHandlers(\n        function (HandlerRegistry $registry) {\n            $registry-\u003eregisterSubscribingHandler(new ParameterBagHandler());\n        }\n    )\n    -\u003ebuild();\n```\n\n### Enable ParameterBag\n\nThe serializer behavior is extended with a new type called ParameterBag.\nTo use this functionality add the JMS Serializer annotation ```@Type(\"ParameterBag\")``` to the property of your class.\n \nBy default the ParameterBag uses instances of ```DMT\\Serializer\\Parameter```. You can override this behavior by adding \nthe FQCN to the ParameterBag type, eg ```@Type(\"ParameterBag\u003cMyNamespace\\MyParameter\u003e\")```. If you do so, make sure your\ncustom parameters implement the ```DMT\\Serializer\\ParameterInterface```.\n\n```php\n\u003c?php\n \nuse DMT\\Serializer\\ParameterBag;\nuse JMS\\Serializer\\Annotation as JMS;\n \nclass Entity\n{\n    /**\n     * @var ParameterBag\n     *\n     * @JMS\\Type(\"ParameterBag\")\n     */\n    protected $parameters;\n \n    /**\n     * @return ParameterBag\n     */\n    public function getParameters(): ParameterBag\n    {\n        return $this-\u003eparameters;\n    }\n \n    /**\n     * @param ParameterBag $parameters\n     */\n    public function setParameters(ParameterBag $parameters): void\n    {\n        $this-\u003eparameters = $parameters;\n    }\n}\n```\n\nFurther reading on [JMS-serializer](https://jmsyst.com/libs/serializer), like YAML or XML configuration, visit \nhttps://jmsyst.com/libs/serializer\n\n### Deserialize Json\n\n```php\n\u003c?php\n \nuse DMT\\Serializer\\ParameterInterface;\nuse JMS\\Serializer\\Serializer;\n \n/** @var Serializer $serializer */ \n$object = $serializer-\u003edeserialize('{\"parameters\":{\"foo\":\"bar\", \"baz\":false}}', Entity::class, 'json');\n$parameters = $object-\u003egetParameters();\n\n// iterate over all the parameters \nforeach ($parameters as $parameter) {\n    /** @var ParameterInterface $parameter */\n    var_dump($parameter-\u003egetValue()); // outputs string(3) \"bar\", bool(false) \n}\n \n// or access an expected parameter by it's name\nvar_dump($parameters['baz']); // outputs class DMT\\Serializer\\Parameter#61 (2) { ... }\n```\n\n### Serialize to Json\n\n```php\n\u003c?php \n \nuse DMT\\Serializer\\Parameter;\nuse DMT\\Serializer\\ParameterBag;\nuse JMS\\Serializer\\Serializer;\n\n$parameter = new Parameter();\n$parameter-\u003esetName('foo');\n$parameter-\u003esetValue(1);\n \n$object = new Entity();\n$object-\u003esetParameters(new ParameterBag([$parameter]));\n \n/** @var Serializer $serializer */ \necho $serializer-\u003eserialize($object, 'json'); // outputs {\"parameters\":{\"foo\":1}}\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmt-software%2Fjms-parameter-bag-handler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmt-software%2Fjms-parameter-bag-handler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmt-software%2Fjms-parameter-bag-handler/lists"}