{"id":20011804,"url":"https://github.com/micro-php/dto","last_synced_at":"2025-07-19T01:02:33.433Z","repository":{"id":39290184,"uuid":"491022125","full_name":"Micro-PHP/dto","owner":"Micro-PHP","description":"PHP library for generating DTO classes.","archived":false,"fork":false,"pushed_at":"2024-07-06T20:51:22.000Z","size":192,"stargazers_count":12,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-04T20:41:02.304Z","etag":null,"topics":["dto","dto-generator","dto-pattern","microphp"],"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/Micro-PHP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-11T08:28:13.000Z","updated_at":"2024-10-27T17:38:02.000Z","dependencies_parsed_at":"2024-11-13T07:29:31.622Z","dependency_job_id":"487098bd-d315-4f93-b627-30686629c7f7","html_url":"https://github.com/Micro-PHP/dto","commit_stats":{"total_commits":59,"total_committers":3,"mean_commits":"19.666666666666668","dds":0.05084745762711862,"last_synced_commit":"86fc1ee70a493c0bc8da8385af3e986b1d00e2ad"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/Micro-PHP/dto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Micro-PHP%2Fdto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Micro-PHP%2Fdto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Micro-PHP%2Fdto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Micro-PHP%2Fdto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Micro-PHP","download_url":"https://codeload.github.com/Micro-PHP/dto/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Micro-PHP%2Fdto/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265866112,"owners_count":23840936,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["dto","dto-generator","dto-pattern","microphp"],"created_at":"2024-11-13T07:27:34.338Z","updated_at":"2025-07-19T01:02:33.366Z","avatar_url":"https://github.com/Micro-PHP.png","language":"PHP","readme":"# DTO Generator\n\nPHP library for generating DTO classes.\n\n## Installation\n\nUse the package manager [composer](https://getcomposer.org/) to install micro/dto.\n\n```bash\ncomposer require micro/dto\n```\n\n## Usage\n\n#### Declare all required classes in the XML Schemea\n\n* example.xml\n* See the full list of possible options in the [XSD schema](src/Resource/schema/dto-1.6.xsd)\n\n``` xml\n\u003c?xml version=\"1.0\"?\u003e\n\u003cdto xmlns=\"micro:dto-1.6\"\n     xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n     xsi:schemaLocation=\"micro:dto-1.6 https://raw.githubusercontent.com/Micro-PHP/dto/master/src/Resource/schema/dto-1.6.xsd\"\u003e\n    \u003cclass name=\"User\\User\"\u003e\n        \u003cproperty name=\"email\" type=\"string\"\u003e\n            \u003cvalidation\u003e\n                \u003cnot_blank/\u003e\n                \u003cemail/\u003e\n            \u003c/validation\u003e\n        \u003c/property\u003e\n        \u003cproperty name=\"username\" type=\"string\"\u003e\n          \u003cvalidation\u003e\n               \u003clength min=\"6\" max=\"50\"/\u003e\n               \u003cregex pattern=\"/^(.[aA-zA]+)$/\"/\u003e\n          \u003c/validation\u003e\n        \u003c/property\u003e\n        \u003cproperty name=\"age\" type=\"int\"\u003e\n            \u003cvalidation\u003e\n                \u003cnot_blank groups=\"put\"/\u003e\n                \u003cgreater_than value=\"18\" /\u003e\n                \u003cless_than value=\"100\" groups=\"put, patch\" /\u003e\n            \u003c/validation\u003e\n        \u003c/property\u003e\n        \u003cproperty name=\"updatedAt\" type=\"datetime\" /\u003e\n        \u003cproperty name=\"parent\" type=\"User\\User\" /\u003e \n    \u003c/class\u003e\n\u003c/dto\u003e\n```\n * And run generator\n```php\n$classGenerator = new \\Micro\\Library\\DTO\\ClassGeneratorFacadeDefault(\n    ['./example.xml'],    // List of class declaration files\n    './out',              // Path to the folder where to generate \n    'Transfer'            // Suffix for the all DTO classes (optional)\n);\n$classGenerator-\u003egenerate();\n\n// Usage example\n$user = new \\User\\UserTransfer();\n$user\n    -\u003esetAge(19)\n    -\u003esetEmail('demo@micro-php.net');\n// OR\n//\n$user['age'] = 19;\n$user['email'] = 'demo@micro-php.net';\n\n// Validation example\n$validator = new \\Micro\\Library\\DTO\\ValidatorFacadeDefault(); \n$validator-\u003evalidate($user); // Validation groups by default [\"Default\"]   \n$validator-\u003evalidate($user, ['patch', 'put']); // Set validation groups [\"patch\", \"put\"]\n\n// Serialize example\n$serializer = new \\Micro\\Library\\DTO\\SerializerFacadeDefault();\n$serializer-\u003etoArray($user); // Simple array\n$serializer-\u003etoJson($user); // Simple Json\n\n// Deserialize example\n$serialized = $serializer-\u003etoJsonTransfer($user);\n$deserialized = $serializer-\u003efromJsonTransfer($serialized);\n\n```\n\n### [See full example](./example/)\n\n\n## Contributing\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n\n## License\n[MIT](https://choosealicense.com/licenses/mit/)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicro-php%2Fdto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicro-php%2Fdto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicro-php%2Fdto/lists"}